getmessage和peekmessage区别
时间: 2023-10-20 11:05:40 浏览: 130
RandRect.rar_getMessage
GetMessage和PeekMessage是Windows API中用于处理消息队列的函数。它们的主要区别如下:
1. GetMessage的主要功能是从消息队列中“取出”消息,消息被取出以后,就从消息队列中将其删除;而PeekMessage的主要功能是“窥视”消息,如果有消息,就返回true,否则返回false。PeekMessage也可以从消息队列中取出消息,这要用到它的一个参数(UINT wRemoveMsg),如果设置为PM_REMOVE,消息则被取出并从消息队列中删除;如果设置为PM_NOREMOVE,消息就不会从消息队列中取出。
2. 如果GetMessage从消息队列中取不到消息,则线程就会被操作系统挂起,等到操作系统重新调度该线程时才会继续执行;而PeekMessage不会挂起线程,如果没有消息,它会立即返回,并且线程会继续执行。
3. GetMessage每次都会等待消息,直到取到消息才返回;而PeekMessage只是查询消息队列,没有消息就立即返回,从返回值判断是否取到了消息。
综上所述,GetMessage和PeekMessage的区别在于GetMessage会阻塞线程并且从消息队列中删除消息,而PeekMessage不会阻塞线程并且可以选择是否删除消息。
#### 引用[.reference_title]
- *1* *2* [GetMessage与Peekmessage区别](https://blog.csdn.net/lala_achun/article/details/6201486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [GetMessage 与 PeekMessage 的区别](https://blog.csdn.net/hellokandy/article/details/52275366)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文