while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
在以上的消息循环当中,如果处理的是虚拟键消息,那么TranslateMessage()函数首先会将消息转换为WM_CHAR消息,然后以新消息的形式投递到消息队列当中去。而DispatchMessage()函数会将当前的消息交给窗口处理过程函数处理。当下次GetMessage()时,是不是重复处理了刚才的虚拟键消息?
谢谢赐教!
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
在以上的消息循环当中,如果处理的是虚拟键消息,那么TranslateMessage()函数首先会将消息转换为WM_CHAR消息,然后以新消息的形式投递到消息队列当中去。而DispatchMessage()函数会将当前的消息交给窗口处理过程函数处理。当下次GetMessage()时,是不是重复处理了刚才的虚拟键消息?
谢谢赐教!
1.GetMessage WM_KEYDOWN;
2.TranslateMessage 生成一个 WM_CHAR 消息放入消息队列;
3.DispatchMessage 调用窗口过程处理 WM_KEYDOWN;
4.GetMessage WM_CHAR;
5.TranslateMessage 不生成任何消息;
6.DispatchMessage 调用窗口过程处理 WM_CHAR;...
DispatchMessage 将消息发送到相对应的窗体或程序确实只有一个消息被投递啊
能告诉我为什么要把虚拟键转成WM_CHAR吗,中间有哪些过程?