// LockControlDlg.cpp : implementation file // #include "stdafx.h" #include "hookmsg.h" #include "LockControlDlg.h" #include "HookMsgDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CLockControlDlg dialog CLockControlDlg::CLockControlDlg() { m_bInitSuccess = FALSE; m_pHookMsgDlg = NULL; } void CLockControlDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLockControlDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CLockControlDlg, CDialog) //{{AFX_MSG_MAP(CLockControlDlg) ON_BN_CLICKED(IDC_CONTROL_CHK2, OnControlChk2) ON_WM_NCHITTEST() ON_WM_CONTEXTMENU() ON_WM_ERASEBKGND() ON_WM_CTLCOLOR() ON_COMMAND(IDM_CONTROL_DLG_CLOSE, OnControlDlgClose) ON_WM_SIZE() ON_WM_CLOSE() ON_COMMAND(IDM_CONTROL_DLG_SHOWMAIN, OnControlDlgShowmain) ON_WM_NCLBUTTONDBLCLK() //}}AFX_MSG_MAP ON_COMMAND_RANGE(IDM_CONTROL_DLG_TRANSPARENT1, IDM_CONTROL_DLG_TRANSPARENT8, OnControlDlgTransParent) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CLockControlDlg message handlers ///////////////////////////////////////////////////////////////////////////// void CLockControlDlg::OnClose() { SaveWindowPlacement(); g_theApp.m_bShowLockContorlDlg = FALSE; CDialog::OnClose(); DestroyWindow (); } //DEL void CLockControlDlg::OnOK() //DEL { //DEL SaveWindowPlacement(); //DEL DestroyWindow (); //DEL } //DEL void CLockControlDlg::OnCancel() //DEL { //DEL SaveWindowPlacement(); //DEL DestroyWindow (); //DEL } void CLockControlDlg::PostNcDestroy() { ((CHookMsgDlg*) AfxGetMainWnd ())->m_pLCDlg = NULL; delete this; } LRESULT CLockControlDlg::OnNcHitTest(CPoint point) { UINT nHitTest = CDialog::OnNcHitTest(point); if ((nHitTest == HTCLIENT) && (::GetAsyncKeyState (MK_LBUTTON) < 0)) nHitTest = HTCAPTION; return nHitTest; } BOOL CLockControlDlg::OnEraseBkgnd(CDC* pDC) { CRect rc; GetWindowRect(rc); ScreenToClient(rc); CButton * pButton = (CButton*)GetDlgItem(IDC_CONTROL_CHK2); BOOL bCheck = pButton->GetCheck(); if( bCheck ) { pDC->FillSolidRect( &rc, RGB(0, 0, 255) ); } else { pDC->FillSolidRect( &rc, RGB(255, 0, 0) ); } return TRUE; } HBRUSH CLockControlDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // if (pWnd->GetDlgCtrlID() == IDC_CONTROL_CHK2) // { // CButton * pButton = (CButton*)pWnd; // BOOL bCheck = pButton->GetCheck(); // if( bCheck ) // { // pDC->SetTextColor(RGB(0, 0, 255)); // } // else // { // pDC->SetTextColor(RGB(255, 0, 0)); // } // // pDC->SetBkMode(TRANSPARENT); // hbr = m_brush; // } // if (nCtlColor == CTLCOLOR_DLG) // { // CButton * pButton = (CButton*)pWnd; // BOOL bCheck = pButton->GetCheck(); // if( bCheck ) // hbr = m_brBlue; // else // hbr = m_brRed; // } return hbr; } BOOL CLockControlDlg::Create( UINT nIDTemplate, CWnd* pParentWnd ) { m_pHookMsgDlg = (CHookMsgDlg*)pParentWnd; return CDialog::Create( nIDTemplate, pParentWnd ); } BOOL CLockControlDlg::OnInitDialog() { CDialog::OnInitDialog(); m_bInitSuccess = TRUE; g_theApp.m_bShowLockContorlDlg = TRUE; m_brRed.CreateSolidBrush(RGB(255,0,0)); m_brBlue.CreateSolidBrush(RGB(0,0,255)); if( GetOsVersion() == VER_PLATFORM_WIN32_NT ) { if( g_hUserDll == NULL ) g_hUserDll = ::LoadLibrary(_T("USER32.dll")); ::SetWindowLong(m_hWnd, GWL_EXSTYLE, ::GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED ); SetTransparent(m_hWnd, 0, 255 * 70/100 , LWA_ALPHA ); } RestoreWindowPlacement(); SetHookMsgState( m_pHookMsgDlg->m_bMonitorStatus ); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CLockControlDlg::OnContextMenu(CWnd* pWnd, CPoint point) { CMenu menu, *pSubMenu; if (!menu.LoadMenu(IDR_CONTROL_DLG_MENU)) return ; if (!(pSubMenu = menu.GetSubMenu(0))) return ; CPoint pos; GetCursorPos(&pos); SetForegroundWindow(); // ÄÁÅØ½ºÆ® ¸Þ´º Ãâ·Â pSubMenu->TrackPopupMenu(TPM_RIGHTALIGN, pos.x, pos.y, this); menu.DestroyMenu(); } void CLockControlDlg::OnControlDlgClose() { PostMessage(WM_CLOSE); } void CLockControlDlg::OnControlDlgTransParent(UINT nID) { if( GetOsVersion() == VER_PLATFORM_WIN32_NT ) { int nValue=100; if( IDM_CONTROL_DLG_TRANSPARENT1 == nID ) nValue=100; else if( IDM_CONTROL_DLG_TRANSPARENT2 == nID ) nValue=70; else if( IDM_CONTROL_DLG_TRANSPARENT3 == nID ) nValue=60; else if( IDM_CONTROL_DLG_TRANSPARENT4 == nID ) nValue=50; else if( IDM_CONTROL_DLG_TRANSPARENT5 == nID ) nValue=40; else if( IDM_CONTROL_DLG_TRANSPARENT6 == nID ) nValue=30; else if( IDM_CONTROL_DLG_TRANSPARENT7 == nID ) nValue=20; else if( IDM_CONTROL_DLG_TRANSPARENT8 == nID ) nValue=10; SetTransparent(m_hWnd, 0, 255 * nValue/100 , LWA_ALPHA ); } else { AfxMessageBox( "¹ÝÅõ¸í À©µµ¿ì ±â´ÉÀº Windows 2000, XP, NT °è¿­¸¸ Áö¿øÇÕ´Ï´Ù." ); } } ///////////////////////////////////////////////////////////////////// void CLockControlDlg::SetHookMsgState(BOOL bLock) { CButton * pButton = (CButton*)GetDlgItem(IDC_CONTROL_CHK2); if( bLock ) { pButton->SetWindowText( "Ç®¸²" ); pButton->SetCheck(TRUE); } else { pButton->SetWindowText( "Àá±è" ); pButton->SetCheck(FALSE); } Invalidate(); } void CLockControlDlg::OnControlChk2() { if( m_pHookMsgDlg->m_bMonitorStatus ) { m_pHookMsgDlg->OnMonitorPause(); } else { m_pHookMsgDlg->OnMonitorStart(); } } void CLockControlDlg::SaveWindowPlacement() { WINDOWPLACEMENT wp; GetWindowPlacement(&wp); g_theApp.WriteProfileBinary("Settings", "CLockControlDlg", (LPBYTE)&wp, sizeof(wp)); } void CLockControlDlg::RestoreWindowPlacement() { WINDOWPLACEMENT *lwp; UINT nl; if(g_theApp.GetProfileBinary("Settings", "CLockControlDlg", (LPBYTE*)&lwp, &nl)) { SetWindowPlacement(lwp); delete [] lwp; } else { CenterWindow(GetDesktopWindow()); } } void CLockControlDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if( m_bInitSuccess ) { GetDlgItem(IDC_CONTROL_CHK2)->MoveWindow( 2, 2, cx-4, cy-4 ); } } void CLockControlDlg::OnControlDlgShowmain() { if( m_pHookMsgDlg ) { m_pHookMsgDlg->SendMessage(WM_COMMAND, IDM_MAINWINDOW_SHOW, 0); } } void CLockControlDlg::OnNcLButtonDblClk(UINT nHitTest, CPoint point) { if( m_pHookMsgDlg ) { m_pHookMsgDlg->SendMessage(WM_COMMAND, IDM_MAINWINDOW_SHOW, 0); } CDialog::OnNcLButtonDblClk(nHitTest, point); }