294 lines
6.8 KiB
C++
294 lines
6.8 KiB
C++
// 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);
|
|
}
|