2012-08-25 07:01
⁄ 工业·编程
⁄ 共 818字 ⁄ 字号
小 中 大
- 说明:
- 此函数从调用其的线程的消息队列中读取一个消息。
- 当它成功取得一个消息时,它才会发送自己取到的消息并返回。
- 这一点不同于PeekMessage,PeekMessage不会等到取到消息之后再返回,
- 即如果此时没有消息,它便直接返回了。
- 返回值:
- 如果函数取到了非WM_QUIT消息,则返回为非0值;
- 如果函数取到了WM_QUIT消息,则返回0;
- 如果有错误发生(比如窗口句柄hWnd无效或lpMsg无效),则返回-1。
- 由于其返回值类型多样,所以正确调用此函数的方式为:
- BOOL bRet;
- while( (bRet = GetMessage( &msg,NULL,0,0 )) != 0)
- {
- if (bRet == -1)
- {
- // 处理错误或者返回
- }
- else
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- 注意:
- 第三个参数和第四个参数无法过滤年WM_QUIT消息。
- */
- BOOL GetMessage(LPMSG lpMsg, //输出型参数,保存取得的消息信息
- HWND hWnd, //窗口句柄,指示要取哪个窗口的消息。
- //需要注意的一点是此句柄所 指示的窗口必须属于调用者线程。
- //当此参数为NULL时,
- //函数会取得发送到调用者线程中所有窗口的消息。
- UINT wMsgFilterMin, //消息过滤,具体可参考MSDN
- UINT wMsgFilterMax
- );