或者系统消息队列和程序消息队列在一个队列中??不解?
解决方案 »
- MFC怎么用list control实现这样的功能,做过的分享一下,或者写过这样的基础类的可否分享一下
- OpenProcess
- SOS高手进!关于如何使用CListCtrl实现胶卷效果!
- 高分请教,如何实现向VC的界面,并且右面显示填充的对话框?!
- 建立了一个类,为什么说它的构造函数“is not a class or namespace name”
- 高分求算法
- 请教如何从任意时刻接受并且播放视频流???
- ??请大家看看这段代码有什么问题,为什么没有选上相应的字体
- 关于VARIANT类型变量的转换
- 在ActiveX中LoadImage
- ListCtrl显示图像列表的问题。
- 各位大虾,小弟初学vc,现有如下问题望大虾们指教
所用硬件消息都有系统发送到消息队列中。(比如wm_lbuttondown,wm_nclbuttondown,
wm_keydown...),另外还包括wm_timer和wm_painter。
其他的消息基本上都是由系统直接发送到窗口过程而不用如消息队列。(这样可以提高系统
速度)
getmessage从消息队列中提取消息,并转化成msg结构,然后dispatchmessage,将消息有系统
发送到窗口处理过程。另外,微软设计线程的一个目标就是,让每个线程都感觉自己是系统中唯一运行的线程。这个
目标使得系统变得强壮,不会应为一个线程而挂起其他的线程。所以你要理解消息发送到的是
线程的消息队列,(如果你的程序是单线程的,那么你只有一个队列,如果有多个界面线程
那么就要维护多个消息队列)它不会去干扰其他线程的消息队列,他们是独立的。
除非你提供了让他们沟通的机制,比如共享,postmessage,sendmessage.
关于,postmessage 和sendmessage他们发送消息到窗口所属线程的队列中。
当然他们也有区别,比如postmessage只是把消息添加到队列,至于目标线程处不处理就不管了,而sendmessege要等待目标线程返回结果,(这段时间他会挂起以等待).
有很多细节问题,可以参看资料。呵呵~