本文共 1349 字,大约阅读时间需要 4 分钟。
01. PreTranslateMessage函数,常用于屏蔽MFC对话框中默认的Enter和ESC消息
函数原型:BOOL PreTranslateMessage(MSG* pMsg)
用法举例:
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{ if(pMsg->message == WM_KEYDOWN){ if(pMsg->wParam == VK_ESCAPE){ return TRUE; } if(pMsg->wParam == VK_RETURN){ return TRUE; // 对话框内部控件不可以接收到回车消息!! } }return CDialog::PreTranslateMessage(pMsg);
}02.响应系统按键
if(pMsg->message==WM_SYSKEYDOWN)
{ if(pMsg->wParam==VK_MENU) MessageBox("alt"); } if((pMsg->wParam==VK_F9) && (GetAsyncKeyState(VK_MENU)<0)) { MessageBox(_T("同时按下了Alt键和F9键")); } GetAsyncKeyState() ========================= 功能:确定用户当前是否按下了键盘上的一个键 原型:SHORT GetAsyncKeyState(int vKey);参数:nVirtKey指出要检查键的虚键代码。结果的高位指出该键当前是否被按下(是为1,否为0)。
常用键的VK值: VK_SHIFT Shift键 VK_LSHIFT 左Shift键 VK_RSHIFT 右Shift键 VK_CONTROL Ctrl键 VK_LCONTROL 左Ctrl键 VK_RCONTROL 右Ctril键 VK_MENU Alt键 VK_LMENU 左Alt键 VK_RMENU 右Alt键 VK_LBUTTON 鼠标左键 VK_RBUTTON 鼠标右键另一个函数GetKeyState与GetAsyncKeyState函数不同。GetAsyncKeyState在按下某键的同时调用,判断正在按下某键。
GetKeyState则在按过某键之后再调用,它返回最近的键盘消息从线程的队列中移出时的键盘状态,判断刚按过了某键。与RegisterHotKey()相比,GetAsyncKeyState()的优点在于可以监控鼠标按键,缺点是需要使用定时器。
//*******************
转载地址:http://tjlws.baihongyu.com/