消息MSG、 获取消息GetMessage、消息过滤、第一个鼠标、键盘消息等
来源:互联网 发布:联通网络信号怎么样 编辑:程序博客网 时间:2024/05/01 11:27
typedef struct tagMSG
{
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
}MSG,*PMSG;
注意:WORD是一个16位的整数,DWORD是一个32位的整数。
WindowsAPI GetMessage(
LPMSG lpMsg, //message information
HWND hWnd, //handle to window 指定获取哪个窗口的消息 设置为NULL 则是获取属于这个线程的所有窗口的消息
UINT wMsgFilterMin, //first message 比如WM_MOSEFIRST、WM_KEYFIRST
UINT wMsgFilterMax //last message 比如WM_MOSELAST、WM_KEYLAST
);
总结:这个获取消息的函数可以获取指定接受某窗口某一段消息号的消息,即做消息范围过滤,也可以指定接受所有的某窗口的消息。
代码应用:
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg); //转换消息 对取到的消息对儿进行转换比如说按下鼠标按键实际是一个WM_KETDOWN和WM_KEYUP消息转换为一个WM_CHAR消息放到消息队列中
DispatchMessage(&msg); //将消息路由给操作系统,操作系统调用窗口过程函数(回调函数)进行处理。
}
领悟:windows程序消息循环的机制
当一个应用程序建立的时候,操作系统会为该应用程序分配一个消息队列,凡是跟该程序相关的消息,操作系统都会把消息放到这个消息队列中,应用程序利用GetMessage从消息队列中取出一条具体的消息,利用TranslateMessage将WM_KEYDOWN和WM_KEYUP转换成一个WM_CHAR消息放到消息队列中。利用DispatchMessage将该消息投递出去,分发出去,分发给操作系统,操作系统利用设计窗口类时候指定的过程函数处理该消息。
注意:键盘按下一个按键的时候,无论按下的是哪个按键,触发的都是WM_CHAR消息,而具体时间按下的哪个字符则是通过消息的附加参数WPARAM得知的。
- 消息MSG、 获取消息GetMessage、消息过滤、第一个鼠标、键盘消息等
- 鼠标消息与键盘消息
- 鼠标消息与键盘消息
- 消息相关的函数 GetMessage - 获取消息
- vc++鼠标键盘消息
- VC鼠标键盘消息
- 鼠标键盘消息
- vc鼠标消息与键盘消息
- vc鼠标消息与键盘消息
- vc鼠标消息与键盘消息
- vc鼠标消息与键盘消息
- 第六章 鼠标消息与键盘消息
- GetMessage截获消息
- Hook键盘和鼠标消息
- 对话框响应鼠标/键盘消息
- BlockInput屏蔽鼠标键盘消息
- duilib鼠标键盘消息处理
- VC/Win32 消息的获取GetMessage/PeekMessage
- .Net 雜談
- Leetcode#74||Search a 2D Matrix
- 深度学习(deep learning)如果有春天,先得摆脱高能耗高资源依赖的局面
- Linux————TCP/IP协议
- 基于深度优先算法的有向图环路检测
- 消息MSG、 获取消息GetMessage、消息过滤、第一个鼠标、键盘消息等
- Android点击应用Icon发生了什么
- Android Api Demos登顶之路(三十六)Fragment-->Custom Animation
- Hibernate 下载、安装和使用
- HDU 5399(简单数学)
- ios开发数组排序(数组中包括字典)
- Windows线程池
- iOS 带cookie进行网络请求
- WPARAM和LPARAM一看就得知道是消息的附加参数