PeekMessage
来源:互联网 发布:mysql 防止重复update 编辑:程序博客网 时间:2024/04/28 22:15
这是个带有Window的线程比较常用的等待一段时间的做法。从这个函数的名字,很明显,这个线程想歇段时间。最简单的方法当然是Sleep(milliseconds);但是这回阻塞这个Thread的Message Queue的Enque。如果别的程序或者线程向这个Thread发个Message,就死等了。比如一个简单的GetWindowText就不动了,你如果用Task Manager看,这个窗口就会显示(No response - 没有反应),所以歇的时候一定不能堵住SendMessage。
举个不恰当的例子,你的Thread是收发室老头儿,老头儿的任务就是接受信件(GetMessage),然后立即送出(DispatchMessage)。邮递员不停地来送信(SendMessage), 你这个函数,老头决定休息一会儿,不送信了(DispatchMessage),但是不能让邮递员干等,人还要干别的事情。所以老头还是瞄了一眼有没有邮递员(PeekMessage),有的话就把信拿到收发室里。 这样邮递员就走了,信留在收发室(Message Queue)。这时候因为不想送信(DispatchMessage),所以一定不能把信给扔了(PM_NOREMOVE),否则信丢了。
等老头休息完了,就可以把信从收发室拿出来(GetMessage),再Dispatch出去。
所以PeekMessage如果后面没有紧跟DispatchMessage, 一定得用PM_NOREMOVE(除非老头儿想过滤,比如把骚扰的信扔了).
举个不恰当的例子,你的Thread是收发室老头儿,老头儿的任务就是接受信件(GetMessage),然后立即送出(DispatchMessage)。邮递员不停地来送信(SendMessage), 你这个函数,老头决定休息一会儿,不送信了(DispatchMessage),但是不能让邮递员干等,人还要干别的事情。所以老头还是瞄了一眼有没有邮递员(PeekMessage),有的话就把信拿到收发室里。 这样邮递员就走了,信留在收发室(Message Queue)。这时候因为不想送信(DispatchMessage),所以一定不能把信给扔了(PM_NOREMOVE),否则信丢了。
等老头休息完了,就可以把信从收发室拿出来(GetMessage),再Dispatch出去。
所以PeekMessage如果后面没有紧跟DispatchMessage, 一定得用PM_NOREMOVE(除非老头儿想过滤,比如把骚扰的信扔了).
你们怎么不看书呢,
windows核心编程上面讲的很详细呀
windows核心编程上面讲的很详细呀
阅读全文
0 0
- PeekMessage
- PeekMessage
- peekmessage
- PeekMessage
- PeekMessage()
- PeekMessage
- PeekMessage
- PeekMessage
- PeekMessage
- PeekMessage
- peekmessage函数
- peekmessage getmessage
- GetMessage PeekMessage
- peekmessage getmessage
- PeekMessage 详解
- PeekMessage & GetMessage
- PeekMessage&&GetMessage
- PeekMessage&GetMessage
- JPA和Spring-Data-JPA简介
- 图像处理之直方图均衡化
- C语言,进制转换之二进制转八进制,完整代码
- Android基于google-play-services-vision:8.1.0实现动态人脸检测
- 有放回采样和无放回采样
- PeekMessage
- Java中的注解是如何工作的?
- Springmvc常用注解
- DevExpress 控件 EditMask Numeric数字类型掩码
- 4 聚簇因子--优化主题系列
- java基础
- 第五章---引入复制后的数据库架构
- log4j的日志文件保存与spring集成
- maven项目 子模块的myabtis配置文件读取失败