This commit is contained in:
291
HookMsg/LockControlDlg.cpp
Normal file
291
HookMsg/LockControlDlg.cpp
Normal file
@@ -0,0 +1,291 @@
|
||||
// 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();
|
||||
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user