PeekMessage的确有“让其他线程向此线程SendMessage过来不阻塞的功效”。 默认情况下,每一个消息被返回到应用程序后,PeekMessage和 GetMessage都会把消息和事件从系统队列中删除。然而有些时候,某个应用程序可能需要扫描队列中现存的消息而并不删除它们。例如,某个应用程序在做一些处理过程,这些处理过程期望“一但发现有可用的消息,就尽快终止”。 这里指定PM_NOREMOVE,是指查看过后不移走消息队列中刚刚被查看到的消息,也就是说这里的PeekMessage只起到一个检测作用 如果必须实时响应windows,则必须如下写,你可以做个测试. for (;;) { //其他代码 ... MSG msg; if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } Sleep(100); }
PeekMessage的用法
最新推荐文章于 2023-09-23 19:17:25 发布