定时器
- 添加定时器事件:类 —> 右击属性 -> 选择消息 -> 添加WM_TIMER
- 打开定时器: SetTimer(1,500,NULL);
1: 定时器编号
500 : 每500ms一次事件触发
NULL: 目前固定 - 删除定时器 KillTimer(1)
1:定时器编号 - 事件处理函数 xxx::OnTimer(UINT_PTR nIDEvent)
nIDEvent:如果打开了几个定时器,触发事件的定时器编号,可以做case语句分别对不同的定时器进行事件处理。
按键消息
-
回车按键 -> CDialogEx::OnOK() 退出对话框 可重写OnOK,避免退出
-
esc 键 -> CDialogEx::OnCancel() 退出对话框 可重写xx,避免退出
-
退出按键(X) -> CDialogEx::OnClose() 退出对话框 添加close消息
重定义OnClose()函数(最终也是调用OnCancel()),可直接退出进程 exit(1); -
PreTranslateMessage是虚函数,是用来截获消息的。只有穿过消息队列的消息才受PreTranslateMessage()影响我们可以通过重载它来处理键盘和鼠标消息。 可重写此函数来对各种按键进行处理,包括以上三个。
例子:将所有按键都转成 回车键,回车键会触发OnOK(),如果这里面什么也不做,则屏蔽所有按键信息
BOOL Login::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message== WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)
{
pMsg->wParam=VK_RETURN;
}
}