Jos*_*osh 9 delphi winapi getmessage peekmessage idle-processing
为什么在Getmessage()创建消息队列之前需要peekMessage语句?
Rob*_*edy 21
这不是必需的.
但是,您有时会看到的是一个尚未准备好处理消息的线程,但它希望能够在其消息队列中接收它们.新线程没有立即消息队列,但调用PeekMessage足以创建消息队列.它会立即返回,因为没有消息,这允许线程继续自己准备好.与此同时,其他线程可以开始为新线程排队消息.一旦新线程准备就绪,它就会调用GetMessage从队列中检索第一条消息,或等待将消息放入队列.
cHa*_*Hao 14
不是.这两个功能做了不同的事情.
PeekMessage(...)不会等待消息出现 - 如果它在那里,它会获得第一个消息,也可以从队列中删除它,但是如果没有消息则立即返回false.在等待消息时正在进行某些处理的应用程序中更常见,并且不能只是坐在那里等待下一条消息.实时游戏等很容易属于这一类.
GetMessage(...)等待直到有消息,然后获取它.它的CPUwise效率更高,因为它不会经常轮询,但如果没有任何消息,它会暂停.它在formy应用程序和其他程序中更常见,不需要进行持续的实时处理.
| 归档时间: |
|
| 查看次数: |
4178 次 |
| 最近记录: |