⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hotkeydlg.cpp

📁 PocketPC中注册热键的代码示例
💻 CPP
字号:
// HotKeyDlg.cpp : implementation file
//

#include "stdafx.h"
#include "HotKey.h"
#include "HotKeyDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CHotKeyDlg dialog

CHotKeyDlg::CHotKeyDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CHotKeyDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CHotKeyDlg)
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CHotKeyDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CHotKeyDlg)
	DDX_Control(pDX, IDC_EDIT, m_ctrlEdit);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CHotKeyDlg, CDialog)
	//{{AFX_MSG_MAP(CHotKeyDlg)
	ON_WM_KEYDOWN()
	ON_WM_KEYUP()
	ON_WM_CHAR()
	ON_WM_ACTIVATE()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_HOTKEY, OnHotKey)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CHotKeyDlg message handlers

void CHotKeyDlg::OutMessage(LPCTSTR szMessage)
{
	m_ctrlEdit.SetSel(-1, -1);	
	m_ctrlEdit.ReplaceSel(szMessage);
}


BOOL CHotKeyDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen

	RegisterHotKeys();

	return FALSE;  // return TRUE  unless you set the focus to a control
}



void CHotKeyDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	CString strMessage;
	strMessage.Format(_T("WM_KEYDOWN: nChar: 0x%x, \r\n\tnRepCnt: 0x%x, nFlags: 0x%x\r\n"), 
		nChar, nRepCnt, nFlags);
	OutMessage(strMessage);

	
	CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CHotKeyDlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	CString strMessage;
	strMessage.Format(_T("WM_KEYUP: nChar: 0x%x, \r\n\tnRepCnt: 0x%x, \r\n\tnFlags: 0x%x\r\n"), 
		nChar, nRepCnt, nFlags);
	OutMessage(strMessage);
	
	CDialog::OnKeyUp(nChar, nRepCnt, nFlags);
}

LRESULT CHotKeyDlg::OnHotKey(WPARAM wParam, LPARAM lParam)
{
	int idHotKey = (int) wParam; 
	UINT fuModifiers = (UINT) LOWORD(lParam); 
	UINT uVirtKey = (UINT) HIWORD(lParam);

	CString strMessage;
	strMessage.Format(_T("WM_HOTKEY: idHotKey: 0x%x, \r\n\tfuModifiers: 0x%x, \r\n\tuVirtKey: 0x%x\r\n"), idHotKey, fuModifiers, uVirtKey);
	OutMessage(strMessage);

	static BOOL bPressed = FALSE;
	if (!bPressed) {
		OutMessage(_T("Simulating OnKeyDown...\r\n"));

		OnKeyDown(uVirtKey, 1, 0);
		bPressed = TRUE;
	} else {
		if (fuModifiers & MOD_KEYUP)
		{
			OutMessage(_T("Simulating OnKeyUp ...\r\n"));
			OnKeyUp(uVirtKey, 1, 0);
			bPressed = FALSE;
		}
	}


	return 0;

}


void CHotKeyDlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	CString strMessage;
	strMessage.Format(_T("WM_CHAR: nChar: 0x%x, \r\n\nRepCnt: 0x%x, \r\n\tnFlags: 0x%x\r\n"), 
		nChar, nRepCnt, nFlags);
	OutMessage(strMessage);
	
	CDialog::OnChar(nChar, nRepCnt, nFlags);
}

void CHotKeyDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 
{
	CDialog::OnActivate(nState, pWndOther, bMinimized);
	if (nState == WA_ACTIVE || nState == WA_CLICKACTIVE )
		RegisterHotKeys();

	
}

void CHotKeyDlg::RegisterHotKeys()
{
	::RegisterHotKey(GetSafeHwnd(), 0x1, MOD_WIN /*| MOD_KEYUP*/, 0xC1);
	::RegisterHotKey(GetSafeHwnd(), 0x2, /*MOD_WIN | */MOD_KEYUP, 0xC2);
	::RegisterHotKey(GetSafeHwnd(), 0x3, MOD_WIN | MOD_KEYUP, 0xC3);
	::RegisterHotKey(GetSafeHwnd(), 0x4, MOD_WIN | MOD_KEYUP, 0xC4);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -