VC++中用EDIT显示按键码的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 04:51:27
我想一个键盘测试程序,功能如下:
打开程序后,按任意键,在一个编辑框中显示我刚按的按键码
如:小键盘上
数字键1=79
数字键2=80

利用键盘钩子(假设该对话框类为CKeyTestDlg):
//KeyTestDlg.h文件中声明
public:
static HHOOK m_hHook;
HINSTANCE m_hInstance;
static LRESULT CALLBACK KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam);
void InstallHook();
void UnistallHook();

//KeyTestDlg.cpp文件中定义
HHOOK CKeyTestDlg::m_hHook = NULL; //静态成员变量初始化
BOOL CKeyTestDlg::OnInitDialog()
{
……
m_hInstance = AfxGetInstanceHandle();
……
return TRUE;
}
LRESULT CALLBACK CKeyTestDlg::KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
CString str;
if(((DWORD)lParam & 0x40000000) && (nCode == HC_ACTION))
{
str.Format("%d", wParam);
SetDlgItemText(IDC_EDIT1, str);
}
return ::CallNextHookEx(m_hHook, nCode, wParam, lParam);
}
void CKeyTestDlg::InstallHook()
{
m_hHook = SetWindowsHookEx(WM_KEYBOARD, (HOOKPROC)KeyboardHookProc, m_hInstance, AfxGetThrea