第一种方法:
for(;;)
{
GetMessageA(&msg,NULL,0,0);
//printf("%5X,%16X,%16x\n",msg.message,msg.wParam,msg.lParam);
TranslateMessage(&msg);
DispatchMessageA(&msg);
}
这种方法得到的结果少。第二种方法:
LRESULT CALLBACK editproc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
printf("%5X,%16X,%16x\n",msg,wParam,lParam);
return DefWindowProc(hwnd,msg,wParam,lParam);
}
这种方法得到的结果包括第一种方法的全部,还有好多,
比如第一种方法,如果鼠标在窗口上移动,则只能得到连续出现的200号消息。而第二种方法在每两个200号消息之间还有84和20号消息。
for(;;)
{
GetMessageA(&msg,NULL,0,0);
//printf("%5X,%16X,%16x\n",msg.message,msg.wParam,msg.lParam);
TranslateMessage(&msg);
DispatchMessageA(&msg);
}
这种方法得到的结果少。第二种方法:
LRESULT CALLBACK editproc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
printf("%5X,%16X,%16x\n",msg,wParam,lParam);
return DefWindowProc(hwnd,msg,wParam,lParam);
}
这种方法得到的结果包括第一种方法的全部,还有好多,
比如第一种方法,如果鼠标在窗口上移动,则只能得到连续出现的200号消息。而第二种方法在每两个200号消息之间还有84和20号消息。
解决方案 »
- 点钞机?
- 怎样将文件里的数据读取然后灰度显示?
- 重叠IO模式下,使用“完成例程”,那么这个“完成例程”里面对数据的访问是否需要互斥?
- A按钮响应A输入框的回车,B按钮响应B输入框的回车,怎么做?
- CPropertySheet和CPropertyPage中OnOk的问题。请看。。。
- 散分100求一个问题的算法,思路!关于3D图形的变换问题.
- 各位大侠救命,不胜感激 vc++ 获得网页内容字符串?
- 编写dll,链接出错
- typedef td::list<T*>::iterator ITERATOR;这样也错,晕!
- 怎样将整形变量转换为字符型变量输出?
- 有个程服务程序用vs2008(vc)做的,现在想给它加个热键相应功能 在服务的哪里写代码?
- 关于MFC进度条的问题
消息号0x200是WM_MOUSEMOVE
0x84 是WM_NCHITTEST
0x20 是WM_SETCURSOR
当鼠标在窗口移动时,系统首先传递WM_MOUSEMOVE到窗口的消息队列(类似PostMessage效果),并且还发送消息
WM_NCHITTEST、WM_SETCURSOR到窗口过程,让系统作些“事情”(类似SendMessage效果)。
DispatchMessageA调用窗口过程
所以你这里editproc两种消息都可收到