GetMessage MSDN理解

来源:互联网 发布:开关柜电气原理图软件 编辑:程序博客网 时间:2024/09/21 13:51

GetMessage

这个函数从线程的消息队列中获取消息,并将获取消息的内容拷贝到lpMsg中;

lpMsg
[out] 指向一个用于从线程消息队列接收MSG消息的结构体
hWnd
[in]指定获取消息的来源;为NULL表示获取当前线程下的所有窗口消息;如果指定窗口句柄,就表示只获线程下某一个窗口的消息;


返回值:
非零值表示当前获取的是非WM_QUIT消息,为零表示获取的是WM_QUIT消息,或者表示lpMsg指向的是一个无效的值;

Remarks:

应用程序通常使用该函数的返回值来确定是否结束消息循环并退出程序;

这个函数只检索与指定窗口(hWnd)或者子窗口相关的消息值,当然是否为hWnd的子窗口,可以通过函数IsChild来确定;检查的消息范围可以通过wMsgFilterMin和wMsgFilterMax指出;
如果hWnd == NULL ,那么将获取投递到调用GetMessage所在线程的窗口消息,窗口消息由PostThreadMessage投递给调用线程的消息队列;GetMessage不能从别的线程或者别的线程创建的窗口初获取消息,即使窗口句柄的值为NULL;
PostThreadMessage投递消息时,消息值的窗口句柄都为NULL;

WM_KEYFIRST和WM_KEYLAST可以用来做检查键盘输入消息的范围值;
WM_MOUSEFIRST和WM_MOUSELAST用来做检查鼠标消息的范围值;

WM_PAINT绘制消息,不能通过该函数移除;这个消息想要被移除,只能在该消息被处理后;


简单说明:
GetMessage(&msg,NULL,0,0);   表示获取线程消息队列的所有消息;
GetMessage(&msg,hMainWnd,0,0)   表示获取线程下,窗口句柄为hMainWnd的窗口的消息;
GetMessage(&msg,hMainWnd,WM_KEYFIRST,WM_KEYLAST)   表示获取线程下,窗口句柄为hMainWnd的键盘输入消息窗口的消息;



0 0
原创粉丝点击