iMONDisplayApiSample/DisplayTest/DisplayTestDlg.cpp
author sl
Mon, 21 Apr 2014 10:04:44 +0200
changeset 13 6828ef797524
permissions -rw-r--r--
Adding API header files to project.
     1 // DisplayTestDlg.cpp : implementation file
     2 //
     3 
     4 #include "stdafx.h"
     5 #include "DisplayTest.h"
     6 #include "DisplayTestDlg.h"
     7 
     8 #ifdef _DEBUG
     9 #define new DEBUG_NEW
    10 #endif
    11 
    12 static WCHAR staticCh=1;
    13 
    14 // CAboutDlg dialog used for App About
    15 
    16 class CAboutDlg : public CDialog
    17 {
    18 public:
    19 	CAboutDlg();
    20 
    21 // Dialog Data
    22 	enum { IDD = IDD_ABOUTBOX };
    23 
    24 	protected:
    25 	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    26 
    27 // Implementation
    28 protected:
    29 	DECLARE_MESSAGE_MAP()
    30 };
    31 
    32 CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
    33 {
    34 }
    35 
    36 void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    37 {
    38 	CDialog::DoDataExchange(pDX);
    39 }
    40 
    41 BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
    42 END_MESSAGE_MAP()
    43 
    44 
    45 // CDisplayTestDlg dialog
    46 
    47 CDisplayTestDlg::CDisplayTestDlg(CWnd* pParent /*=NULL*/)
    48 	: CDialog(CDisplayTestDlg::IDD, pParent)
    49 {
    50 	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    51 	
    52 	m_strLine1 = _T("");
    53 	m_strLine2 = _T("");
    54 	m_strLine3 = _T("");
    55 
    56 	m_uEqTimer = 0;
    57 	m_uEqTimer2 = 0;
    58 	m_bVfdConnected = FALSE;
    59 	m_bLcdConnected = FALSE;
    60 }
    61 
    62 void CDisplayTestDlg::DoDataExchange(CDataExchange* pDX)
    63 {
    64 	CDialog::DoDataExchange(pDX);
    65 
    66 	DDX_Text(pDX, IDC_EDIT1, m_strLine1);
    67 	DDX_Text(pDX, IDC_EDIT2, m_strLine2);
    68 	DDX_Text(pDX, IDC_EDIT3, m_strLine3);
    69 }
    70 
    71 BEGIN_MESSAGE_MAP(CDisplayTestDlg, CDialog)
    72 	ON_WM_SYSCOMMAND()
    73 	ON_WM_PAINT()
    74 	ON_WM_QUERYDRAGICON()
    75 	ON_WM_DESTROY()
    76 	ON_WM_TIMER()
    77 	//}}AFX_MSG_MAP
    78 	ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButtonInit)
    79 	ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButtonVfdSendText)
    80 	ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButtonVfdRandomEq)
    81 	ON_BN_CLICKED(IDC_BUTTON4, OnBnClickedButtonLcdSendText)
    82 	ON_BN_CLICKED(IDC_BUTTON5, OnBnClickedButtonLcdRandomEq)
    83 
    84 	ON_BN_CLICKED(IDC_ORANGE1, OnLcdOrangeIcon)
    85 	ON_BN_CLICKED(IDC_ORANGE2, OnLcdOrangeIcon)
    86 	ON_BN_CLICKED(IDC_ORANGE3, OnLcdOrangeIcon)
    87 	ON_BN_CLICKED(IDC_ORANGE4, OnLcdOrangeIcon)
    88 	ON_BN_CLICKED(IDC_ORANGE5, OnLcdOrangeIcon)
    89 	ON_BN_CLICKED(IDC_ORANGE6, OnLcdOrangeIcon)
    90 	ON_BN_CLICKED(IDC_ORANGE7, OnLcdOrangeIcon)
    91 	ON_BN_CLICKED(IDC_ORANGE8, OnLcdOrangeIcon)
    92 	ON_BN_CLICKED(IDC_ORANGE0, OnLcdOrangeIcon)
    93 	ON_BN_CLICKED(IDC_MUSIC, OnLcdMediaTypeIcon)
    94 	ON_BN_CLICKED(IDC_MOVIE, OnLcdMediaTypeIcon)
    95 	ON_BN_CLICKED(IDC_PHOTO, OnLcdMediaTypeIcon)
    96 	ON_BN_CLICKED(IDC_CD, OnLcdMediaTypeIcon)
    97 	ON_BN_CLICKED(IDC_TV, OnLcdMediaTypeIcon)
    98 	ON_BN_CLICKED(IDC_WEBCASTING, OnLcdMediaTypeIcon)
    99 	ON_BN_CLICKED(IDC_NEWS, OnLcdMediaTypeIcon)
   100 	ON_BN_CLICKED(IDC_SPK_L, OnLcdSpeakerIcon)
   101 	ON_BN_CLICKED(IDC_SPK_C, OnLcdSpeakerIcon)
   102 	ON_BN_CLICKED(IDC_SPK_R, OnLcdSpeakerIcon)
   103 	ON_BN_CLICKED(IDC_SPK_SL, OnLcdSpeakerIcon)
   104 	ON_BN_CLICKED(IDC_SPK_LFE, OnLcdSpeakerIcon)
   105 	ON_BN_CLICKED(IDC_SPK_SR, OnLcdSpeakerIcon)
   106 	ON_BN_CLICKED(IDC_SPK_RL, OnLcdSpeakerIcon)
   107 	ON_BN_CLICKED(IDC_SPK_SPDIF, OnLcdSpeakerIcon)
   108 	ON_BN_CLICKED(IDC_SPK_RR, OnLcdSpeakerIcon)
   109 	ON_BN_CLICKED(IDC_AV_MPG, OnLcdVideoCodecIcon)
   110 	ON_BN_CLICKED(IDC_AV_DIVX, OnLcdVideoCodecIcon)
   111 	ON_BN_CLICKED(IDC_AV_XVID, OnLcdVideoCodecIcon)
   112 	ON_BN_CLICKED(IDC_AV_WMV, OnLcdVideoCodecIcon)
   113 	ON_BN_CLICKED(IDC_AV_MPA, OnLcdVideoCodecIcon)
   114 	ON_BN_CLICKED(IDC_AV_AC3, OnLcdVideoCodecIcon)
   115 	ON_BN_CLICKED(IDC_AV_DTS, OnLcdVideoCodecIcon)
   116 	ON_BN_CLICKED(IDC_AV_WMA, OnLcdVideoCodecIcon)
   117 	ON_BN_CLICKED(IDC_A_MP3, OnLcdAudioCodecIcon)
   118 	ON_BN_CLICKED(IDC_A_OGG, OnLcdAudioCodecIcon)
   119 	ON_BN_CLICKED(IDC_A_WMA, OnLcdAudioCodecIcon)
   120 	ON_BN_CLICKED(IDC_A_WAV, OnLcdAudioCodecIcon)
   121 	ON_BN_CLICKED(IDC_AR_SRC, OnLcdAspectRatioIcon)
   122 	ON_BN_CLICKED(IDC_AR_FIT, OnLcdAspectRatioIcon)
   123 	ON_BN_CLICKED(IDC_AR_TV, OnLcdAspectRatioIcon)
   124 	ON_BN_CLICKED(IDC_AR_HDTV, OnLcdAspectRatioIcon)
   125 	ON_BN_CLICKED(IDC_AR_SCR1, OnLcdAspectRatioIcon)
   126 	ON_BN_CLICKED(IDC_AR_SCR2, OnLcdAspectRatioIcon)
   127 	ON_BN_CLICKED(IDC_REPEAT, OnLcdEtcIcon)
   128 	ON_BN_CLICKED(IDC_SHUFFLE, OnLcdEtcIcon)
   129 	ON_BN_CLICKED(IDC_ALARM, OnLcdEtcIcon)
   130 	ON_BN_CLICKED(IDC_REC, OnLcdEtcIcon)
   131 	ON_BN_CLICKED(IDC_VOL, OnLcdEtcIcon)
   132 	ON_BN_CLICKED(IDC_TIME, OnLcdEtcIcon)
   133 	ON_WM_HSCROLL()
   134 
   135 	ON_MESSAGE(WM_DSP_PLUGIN_NOTIFY, OnDisplayPluginNotify)
   136 	ON_BN_CLICKED(IDC_BUTTON6, &CDisplayTestDlg::OnBnClickedScrollChar)
   137 	ON_BN_CLICKED(IDC_BUTTON7, &CDisplayTestDlg::OnBnClickedNextChar)
   138 	ON_BN_CLICKED(IDC_BUTTON8, &CDisplayTestDlg::OnBnClickedPreviousChar)
   139 END_MESSAGE_MAP()
   140 
   141 
   142 
   143 
   144 // CDisplayTestDlg message handlers
   145 
   146 BOOL CDisplayTestDlg::OnInitDialog()
   147 {
   148 	CDialog::OnInitDialog();
   149 
   150 	// Add "About..." menu item to system menu.
   151 
   152 	// IDM_ABOUTBOX must be in the system command range.
   153 	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
   154 	ASSERT(IDM_ABOUTBOX < 0xF000);
   155 
   156 	CMenu* pSysMenu = GetSystemMenu(FALSE);
   157 	if (pSysMenu != NULL)
   158 	{
   159 		CString strAboutMenu;
   160 		strAboutMenu.LoadString(IDS_ABOUTBOX);
   161 		if (!strAboutMenu.IsEmpty())
   162 		{
   163 			pSysMenu->AppendMenu(MF_SEPARATOR);
   164 			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
   165 		}
   166 	}
   167 
   168 	// Set the icon for this dialog.  The framework does this automatically
   169 	//  when the application's main window is not a dialog
   170 	SetIcon(m_hIcon, TRUE);			// Set big icon
   171 	SetIcon(m_hIcon, FALSE);		// Set small icon
   172 
   173 	// TODO: Add extra initialization here
   174 	m_strLine1 = _T("SoundGraph, Inc.");
   175 	m_strLine2 = _T("iMON Display API");
   176 	m_strLine3 = _T("SoundGraph, Inc. iMON Display API");
   177 
   178 	UpdateControlUI();
   179 
   180 	CSliderCtrl* pSliderCtrl = (CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
   181 	if(pSliderCtrl)
   182 	{
   183 		pSliderCtrl->SetRange(0, 100);
   184 		pSliderCtrl->SetPos(0);
   185 	}
   186 
   187 	UpdateData(FALSE);
   188 
   189 	return TRUE;  // return TRUE  unless you set the focus to a control
   190 }
   191 
   192 void CDisplayTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
   193 {
   194 	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
   195 	{
   196 		CAboutDlg dlgAbout;
   197 		dlgAbout.DoModal();
   198 	}
   199 	else
   200 	{
   201 		CDialog::OnSysCommand(nID, lParam);
   202 	}
   203 }
   204 
   205 // If you add a minimize button to your dialog, you will need the code below
   206 //  to draw the icon.  For MFC applications using the document/view model,
   207 //  this is automatically done for you by the framework.
   208 
   209 void CDisplayTestDlg::OnPaint()
   210 {
   211 	if (IsIconic())
   212 	{
   213 		CPaintDC dc(this); // device context for painting
   214 
   215 		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
   216 
   217 		// Center icon in client rectangle
   218 		int cxIcon = GetSystemMetrics(SM_CXICON);
   219 		int cyIcon = GetSystemMetrics(SM_CYICON);
   220 		CRect rect;
   221 		GetClientRect(&rect);
   222 		int x = (rect.Width() - cxIcon + 1) / 2;
   223 		int y = (rect.Height() - cyIcon + 1) / 2;
   224 
   225 		// Draw the icon
   226 		dc.DrawIcon(x, y, m_hIcon);
   227 	}
   228 	else
   229 	{
   230 		CDialog::OnPaint();
   231 	}
   232 }
   233 
   234 // The system calls this function to obtain the cursor to display while the user drags
   235 //  the minimized window.
   236 HCURSOR CDisplayTestDlg::OnQueryDragIcon()
   237 {
   238 	return static_cast<HCURSOR>(m_hIcon);
   239 }
   240 
   241 void CDisplayTestDlg::OnDestroy() 
   242 {
   243 	CDialog::OnDestroy();
   244 
   245 	IMON_Display_Uninit();
   246 }
   247 
   248 void CDisplayTestDlg::OnTimer(UINT nIDEvent) 
   249 {
   250 	if(nIDEvent == 101)
   251 	{
   252 
   253 		DSPEQDATA eqData;
   254 		for(int i=0; i<16;i++)
   255 		{
   256 			eqData.BandData[i] = rand()%100;
   257 		}
   258 		IMON_Display_SetVfdEqData(&eqData);		
   259 	}
   260 	else if(nIDEvent == 102)
   261 	{
   262 		DSPEQDATA eqDataL;
   263 		DSPEQDATA eqDataR;
   264 		for(int i=0; i<16;i++)
   265 		{
   266 			eqDataL.BandData[i] = rand()%100;
   267 			eqDataR.BandData[i] = rand()%100;
   268 		}
   269 		IMON_Display_SetLcdEqData(&eqDataL, &eqDataR);
   270 	}
   271 	else if (nIDEvent == 103)
   272 	{
   273 		//Char scroll
   274 		WCHAR myStr[17];
   275 
   276 		WCHAR myCh=staticCh;
   277 
   278 		for (int i=0;i<16;i++)
   279 		{
   280 			myStr[i]=myCh;
   281 			myCh++;
   282 		}
   283 
   284 		staticCh++;
   285 		myStr[16]=0;
   286 		//
   287 		//myCh--;
   288 
   289 		CString counter;
   290 		counter.Format(TEXT("%d - %d"),myStr[0],myStr[15]);
   291 
   292 		IMON_Display_SetVfdText(myStr, (LPCTSTR)counter);
   293 
   294 	}
   295 
   296 	CDialog::OnTimer(nIDEvent);
   297 }
   298 
   299 
   300 void CDisplayTestDlg::OnBnClickedButtonInit()
   301 {
   302 	if(IMON_Display_IsInited() != DSP_S_INITED)		Init();
   303 	else											Uninit();
   304 }
   305 
   306 void CDisplayTestDlg::OnBnClickedButtonVfdSendText()
   307 {
   308 	UpdateData(TRUE);
   309 	IMON_Display_SetVfdText((LPCTSTR)m_strLine1, (LPCTSTR)m_strLine2);
   310 }
   311 
   312 void CDisplayTestDlg::OnBnClickedButtonVfdRandomEq()
   313 {
   314 	if(m_uEqTimer)
   315 	{	
   316 		KillTimer(101);		m_uEqTimer = 0;		
   317 		GetDlgItem(IDC_BUTTON3)->SetWindowText(_T("Start Random EQ"));
   318 	}
   319 	else
   320 	{
   321 		m_uEqTimer = SetTimer(101, 100, NULL);
   322 		GetDlgItem(IDC_BUTTON3)->SetWindowText(_T("Stop Random EQ"));
   323 	}
   324 }
   325 
   326 void CDisplayTestDlg::OnBnClickedScrollChar()
   327 {
   328 	if(m_uEqTimer)
   329 	{	
   330 		KillTimer(103);		m_uEqTimer = 0;		
   331 		GetDlgItem(IDC_BUTTON6)->SetWindowText(_T("Start Scroll Char"));
   332 	}
   333 	else
   334 	{
   335 		m_uEqTimer = SetTimer(103, 500, NULL);
   336 		GetDlgItem(IDC_BUTTON6)->SetWindowText(_T("Stop Scroll Char"));
   337 	}
   338 }
   339 
   340 void CDisplayTestDlg::OnBnClickedNextChar()
   341 {
   342 	//staticCh++;
   343 	OnTimer(103);
   344 }
   345 
   346 void CDisplayTestDlg::OnBnClickedPreviousChar()
   347 {
   348 	staticCh-=2;
   349 	OnTimer(103);
   350 }
   351 
   352 
   353 
   354 void CDisplayTestDlg::OnBnClickedButtonLcdSendText()
   355 {
   356 	UpdateData(TRUE);
   357 	IMON_Display_SetLcdText((LPCTSTR)m_strLine3);
   358 }
   359 
   360 void CDisplayTestDlg::OnBnClickedButtonLcdRandomEq()
   361 {
   362 	if(m_uEqTimer2)
   363 	{	
   364 		KillTimer(102);		m_uEqTimer2 = 0;		
   365 		GetDlgItem(IDC_BUTTON5)->SetWindowText(_T("Start Random EQ"));
   366 	}
   367 	else
   368 	{
   369 		m_uEqTimer2 = SetTimer(102, 40, NULL);
   370 		GetDlgItem(IDC_BUTTON5)->SetWindowText(_T("Stop Random EQ"));
   371 	}
   372 }
   373 
   374 void CDisplayTestDlg::OnLcdOrangeIcon()
   375 {
   376 	BYTE data[2];
   377 	memset(data, 0, sizeof(BYTE)*2);
   378 
   379 	if(((CButton*)GetDlgItem(IDC_ORANGE1))->GetCheck())		data[0] |= 0x80;
   380 	if(((CButton*)GetDlgItem(IDC_ORANGE2))->GetCheck())		data[0] |= 0x40;
   381 	if(((CButton*)GetDlgItem(IDC_ORANGE3))->GetCheck())		data[0] |= 0x20;
   382 	if(((CButton*)GetDlgItem(IDC_ORANGE4))->GetCheck())		data[0] |= 0x10;
   383 	if(((CButton*)GetDlgItem(IDC_ORANGE5))->GetCheck())		data[0] |= 0x08;
   384 	if(((CButton*)GetDlgItem(IDC_ORANGE6))->GetCheck())		data[0] |= 0x04;
   385 	if(((CButton*)GetDlgItem(IDC_ORANGE7))->GetCheck())		data[0] |= 0x02;
   386 	if(((CButton*)GetDlgItem(IDC_ORANGE8))->GetCheck())		data[0] |= 0x01;
   387 	if(((CButton*)GetDlgItem(IDC_ORANGE0))->GetCheck())		data[1] |= 0x80;
   388 
   389 	IMON_Display_SetLcdOrangeIcon(data[0], data[1]);
   390 }
   391 
   392 void CDisplayTestDlg::OnLcdMediaTypeIcon()
   393 {
   394 	BYTE data = 0;
   395 
   396 	if(((CButton*)GetDlgItem(IDC_MUSIC))->GetCheck())		data |= 0x80;
   397 	if(((CButton*)GetDlgItem(IDC_MOVIE))->GetCheck())		data |= 0x40;
   398 	if(((CButton*)GetDlgItem(IDC_PHOTO))->GetCheck())		data |= 0x20;
   399 	if(((CButton*)GetDlgItem(IDC_CD))->GetCheck())			data |= 0x10;
   400 	if(((CButton*)GetDlgItem(IDC_TV))->GetCheck())			data |= 0x08;
   401 	if(((CButton*)GetDlgItem(IDC_WEBCASTING))->GetCheck())	data |= 0x04;
   402 	if(((CButton*)GetDlgItem(IDC_NEWS))->GetCheck())		data |= 0x02;
   403 
   404 	IMON_Display_SetLcdMediaTypeIcon(data);
   405 }
   406 
   407 void CDisplayTestDlg::OnLcdSpeakerIcon()
   408 {
   409 	BYTE data[2];
   410 	memset(data, 0, sizeof(BYTE)*2);
   411 
   412 	if(((CButton*)GetDlgItem(IDC_SPK_L))->GetCheck())		data[0] |= 0x80;
   413 	if(((CButton*)GetDlgItem(IDC_SPK_C))->GetCheck())		data[0] |= 0x40;
   414 	if(((CButton*)GetDlgItem(IDC_SPK_R))->GetCheck())		data[0] |= 0x20;
   415 	if(((CButton*)GetDlgItem(IDC_SPK_SL))->GetCheck())		data[0] |= 0x10;
   416 	if(((CButton*)GetDlgItem(IDC_SPK_LFE))->GetCheck())		data[0] |= 0x08;
   417 	if(((CButton*)GetDlgItem(IDC_SPK_SR))->GetCheck())		data[0] |= 0x04;
   418 	if(((CButton*)GetDlgItem(IDC_SPK_RL))->GetCheck())		data[0] |= 0x02;
   419 	if(((CButton*)GetDlgItem(IDC_SPK_SPDIF))->GetCheck())	data[0] |= 0x01;
   420 	if(((CButton*)GetDlgItem(IDC_SPK_RR))->GetCheck())		data[1] |= 0x80;
   421 
   422 	IMON_Display_SetLcdSpeakerIcon(data[0], data[1]);
   423 }
   424 
   425 void CDisplayTestDlg::OnLcdVideoCodecIcon()
   426 {
   427 	BYTE data = 0;
   428 
   429 	if(((CButton*)GetDlgItem(IDC_AV_MPG))->GetCheck())		data |= 0x80;
   430 	if(((CButton*)GetDlgItem(IDC_AV_DIVX))->GetCheck())		data |= 0x40;
   431 	if(((CButton*)GetDlgItem(IDC_AV_XVID))->GetCheck())		data |= 0x20;
   432 	if(((CButton*)GetDlgItem(IDC_AV_WMV))->GetCheck())		data |= 0x10;
   433 	if(((CButton*)GetDlgItem(IDC_AV_MPA))->GetCheck())		data |= 0x08;
   434 	if(((CButton*)GetDlgItem(IDC_AV_AC3))->GetCheck())		data |= 0x04;
   435 	if(((CButton*)GetDlgItem(IDC_AV_DTS))->GetCheck())		data |= 0x02;
   436 	if(((CButton*)GetDlgItem(IDC_AV_WMA))->GetCheck())		data |= 0x01;
   437 
   438 	IMON_Display_SetLcdVideoCodecIcon(data);
   439 }
   440 
   441 void CDisplayTestDlg::OnLcdAudioCodecIcon()
   442 {
   443 	BYTE data = 0;
   444 
   445 	if(((CButton*)GetDlgItem(IDC_A_MP3))->GetCheck())		data |= 0x80;
   446 	if(((CButton*)GetDlgItem(IDC_A_OGG))->GetCheck())		data |= 0x40;
   447 	if(((CButton*)GetDlgItem(IDC_A_WMA))->GetCheck())		data |= 0x20;
   448 	if(((CButton*)GetDlgItem(IDC_A_WAV))->GetCheck())		data |= 0x10;
   449 
   450 	IMON_Display_SetLcdAudioCodecIcon(data);
   451 }
   452 
   453 void CDisplayTestDlg::OnLcdAspectRatioIcon()
   454 {
   455 	BYTE data = 0;
   456 
   457 	if(((CButton*)GetDlgItem(IDC_AR_SRC))->GetCheck())		data |= 0x80;
   458 	if(((CButton*)GetDlgItem(IDC_AR_FIT))->GetCheck())		data |= 0x40;
   459 	if(((CButton*)GetDlgItem(IDC_AR_TV))->GetCheck())		data |= 0x20;
   460 	if(((CButton*)GetDlgItem(IDC_AR_HDTV))->GetCheck())		data |= 0x10;
   461 	if(((CButton*)GetDlgItem(IDC_AR_SCR1))->GetCheck())		data |= 0x08;
   462 	if(((CButton*)GetDlgItem(IDC_AR_SCR2))->GetCheck())		data |= 0x04;
   463 
   464 	IMON_Display_SetLcdAspectRatioIcon(data);
   465 }
   466 
   467 void CDisplayTestDlg::OnLcdEtcIcon()
   468 {
   469 	BYTE data = 0;
   470 
   471 	if(((CButton*)GetDlgItem(IDC_REPEAT))->GetCheck())		data |= 0x80;
   472 	if(((CButton*)GetDlgItem(IDC_SHUFFLE))->GetCheck())		data |= 0x40;
   473 	if(((CButton*)GetDlgItem(IDC_ALARM))->GetCheck())		data |= 0x20;
   474 	if(((CButton*)GetDlgItem(IDC_REC))->GetCheck())			data |= 0x10;
   475 	if(((CButton*)GetDlgItem(IDC_VOL))->GetCheck())			data |= 0x08;
   476 	if(((CButton*)GetDlgItem(IDC_TIME))->GetCheck())		data |= 0x04;
   477 
   478 	IMON_Display_SetLcdEtcIcon(data);
   479 }
   480 
   481 void CDisplayTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
   482 {
   483 	CSliderCtrl* pSliderCtrl = (CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
   484 	if( pSliderCtrl && pSliderCtrl->GetSafeHwnd() && 
   485 		pScrollBar && pScrollBar->GetSafeHwnd() == pSliderCtrl->GetSafeHwnd() )
   486 	{
   487 		IMON_Display_SetLcdProgress(pSliderCtrl->GetPos(), 100);
   488 	}
   489 	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
   490 }
   491 
   492 LRESULT CDisplayTestDlg::OnDisplayPluginNotify(WPARAM wParam, LPARAM lParam)
   493 {
   494 	if(!GetSafeHwnd() || !IsWindow(GetSafeHwnd()))		return 0;
   495 
   496 	switch(wParam)
   497 	{
   498 	case DSPNM_PLUGIN_SUCCEED:
   499 	case DSPNM_IMON_RESTARTED:
   500 	case DSPNM_HW_CONNECTED:
   501 		{
   502 			GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);
   503 			m_bVfdConnected = FALSE;
   504 			m_bLcdConnected = FALSE;
   505 			if((lParam & DSPN_DSP_VFD) == DSPN_DSP_VFD)		m_bVfdConnected = TRUE;
   506 			if((lParam & DSPN_DSP_LCD) == DSPN_DSP_LCD)		m_bLcdConnected = TRUE;
   507 			UpdateControlUI();
   508 
   509 			DisplayPluginMessage(wParam, FALSE);
   510 		}
   511 		break;
   512 
   513 	case DSPNM_PLUGIN_FAILED:
   514 	case DSPNM_HW_DISCONNECTED:
   515 	case DSPNM_IMON_CLOSED:
   516 		{
   517 			GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);
   518 			m_bVfdConnected = FALSE;
   519 			m_bLcdConnected = FALSE;
   520 			UpdateControlUI();
   521 
   522 			DisplayPluginMessage(lParam, TRUE);
   523 		}
   524 		break;
   525 
   526 	case DSPNM_LCD_TEXT_SCROLL_DONE:
   527 		{
   528 			TRACE(_T("LCD Text Scroll Finished.\n"));
   529 		}
   530 		break;
   531 	}
   532 	return 0;
   533 }
   534 
   535 void CDisplayTestDlg::Init()
   536 {
   537 	Uninit();
   538 
   539 	IMON_Display_Init(this->GetSafeHwnd(), WM_DSP_PLUGIN_NOTIFY);
   540 	GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
   541 }
   542 
   543 void CDisplayTestDlg::Uninit()
   544 {
   545 	IMON_Display_Uninit();
   546 
   547 	m_bVfdConnected = FALSE;
   548 	m_bLcdConnected = FALSE;
   549 
   550 	for(int i=IDC_ORANGE1;i<=IDC_AR_SCR2;i++)
   551 	{
   552 		if(GetDlgItem(i))
   553 			((CButton*)GetDlgItem(i))->SetCheck(FALSE);
   554 	}
   555 	CSliderCtrl* pSliderCtrl = (CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
   556 	if(pSliderCtrl)	pSliderCtrl->SetPos(0);
   557 
   558 	UpdateControlUI();
   559 }
   560 
   561 void CDisplayTestDlg::DisplayPluginMessage(UINT uErrCode, BOOL bError)
   562 {
   563 	CString strErrMsg = _T("");
   564 
   565 	if(bError)
   566 	{
   567 		switch(uErrCode)
   568 		{
   569 		case DSPN_ERR_IN_USED:			strErrMsg = _T("Display Plug-in is Already Used by Other Application.");		break;
   570 		case DSPN_ERR_HW_DISCONNECTED:	strErrMsg = _T("iMON HW is Not Connected.");									break;
   571 		case DSPN_ERR_NOT_SUPPORTED_HW:	strErrMsg = _T("The Connected iMON HW doesn't Support Display Plug-in.");		break;
   572 		case DSPN_ERR_PLUGIN_DISABLED:	strErrMsg = _T("Display Plug-in Mode Option is Disabled.");						break;
   573 		case DSPN_ERR_IMON_NO_REPLY:	strErrMsg = _T("The Latest iMON is Not Installed or iMON Not Running.");		break;
   574 		case DSPN_ERR_UNKNOWN:			strErrMsg = _T("Unknown Failure.");												break;
   575 		}
   576 	}
   577 	else
   578 	{
   579 		switch(uErrCode)
   580 		{
   581 		case DSPNM_PLUGIN_SUCCEED:		strErrMsg = _T("Plug-in Mode Inited Successfully.");		break;
   582 		case DSPNM_IMON_RESTARTED:		strErrMsg = _T("iMON Started and Plug-in Mode Inited.");		break;
   583 		case DSPNM_HW_CONNECTED:		strErrMsg = _T("iMON HW Connected and Plug-in Mode Inited.");	break;
   584 		}
   585 	}
   586 	GetDlgItem(IDC_STATIC_INFO)->SetWindowText((LPCTSTR)strErrMsg);
   587 }
   588 
   589 void CDisplayTestDlg::UpdateControlUI()
   590 {
   591 	GetDlgItem(IDC_STATIC_INFO)->SetWindowText(_T(""));
   592 	
   593 	if(IMON_Display_IsInited() != DSP_S_INITED)		GetDlgItem(IDC_BUTTON1)->SetWindowText(_T("Init Plug-in"));
   594 	else											GetDlgItem(IDC_BUTTON1)->SetWindowText(_T("Uninit Plug-in"));
   595 
   596 	for(int i=IDC_EDIT1;i<=IDC_BUTTON3;i++)
   597 	{
   598 		if(GetDlgItem(i))
   599 			GetDlgItem(i)->EnableWindow(m_bVfdConnected);
   600 	}
   601 	for(int i=IDC_BUTTON6;i<=IDC_BUTTON8;i++)
   602 	{
   603 		if(GetDlgItem(i))
   604 			GetDlgItem(i)->EnableWindow(m_bVfdConnected);
   605 	}
   606 	for(int i=IDC_EDIT3;i<=IDC_SLIDER1;i++)
   607 	{
   608 		if(GetDlgItem(i))
   609 			GetDlgItem(i)->EnableWindow(m_bLcdConnected);
   610 	}
   611 }
   612 
   613 
   614