不太明白CWinThread的消息队列,是否只有CWnd才有消息队列呢? MFC上说CWinThread可有有消息队列,那它派生于CCmdTarget,岂不是全是WM_COMMAND?我以为只有CWnd可以有消息队列,因为WM_xxxx(除了WM_COMMAND)只有CWnd才能处理。自己还需要学习啊。顺便问一句,大家都放假了吧?我们居然还要上班。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 线程都可以(但不一定)有消息队列,一般来讲当线程创建一个窗口或者显式调用 GetMessage 的时候,操作系统就会为其创建消息队列。 消息队列是线程的而不是窗口的CWnd的,窗口仅仅是处理它所在的线程队列中的消息。 消息队列是属于线程的,不是属于某个类的。窗口也是属于某个线程的,Post给窗口的消息都是放到窗口所属线程的消息队列里,再由线程中执行的消息循环来分发给目的窗口。CWinThread类中有消息循环的代码。 消息队列则是与线程 ( Thread ) 相关的,换句话说,一个线程只能有一个消息队列 ( queue ) 与之相对应。一个进程里面可以有多个线程;但是一线程里面就不能超出一个消息队列 ( Win98 里面甚至可以没有消息队列 )。http://blog.csdn.net/benny5609/archive/2008/03/10/2163625.aspx没有Wnd时可以处理WM_COMMAND,还可以自定义消息发送和接受PostThreadMessagewhile(GetMessage){TranslateMessage;DispatchMessage;} 应该清楚MFC的消息循环(::GetMessage,::PeekMessage),消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情。在MFC的应用程序中(应用程序类基于CWinThread继承),必须要有一个消息循环,他的作用是从应用程序的消息队列中读取消息,并把它派送出去(::DispatchMessage)。而消息路由是指消息派送出去之后,系统(USER32.DLL)把消息投递到哪个窗口,以及以后消息在窗口之间的传递是怎样的。http://dev.rdxx.com/VC/MFC/2004-5/31/041446348.shtml 消息当然属于线程,每个线程当然只有一个消息队列不是“有谁在一个进程里面搞了多个消息队列的?”,这是自动做的,每当你在一个线程中调用诸如GetMessage之类的消息函数,如果该线程没有消息队列,就会自动创建一个 忽然有个疑问:如果我这个CWinTread被Post进来一个WM_CREATE,但是我这个线程里没有窗口(也就没有窗口函数),这个消息会怎样处理/路由呢? WM_COMMAND消息一般是通过主窗口转到目标对象的 做了一个播放器,win7开启毛玻璃特效时, 改变窗口大小, 视频背景闪烁 求字符串截断方法 急,关于CyAPI应用 菜鸟提问 求CDC及HDC的详细显示位图方法 请教一下:我现在写一个图形处理的程序,有一些疑问。大概是关于保存图象颜色的。 我的程序一启动就有三个线程,这是为什么? 如何使CRichEditCtrl不接受输入法输入 在VC中怎样和数据库相连??? IPicture接口的Render方法的问题:怎么有一行像素没有了!太奇怪了! vc++中的define CString show;类型有变化了么
http://blog.csdn.net/benny5609/archive/2008/03/10/2163625.aspx没有Wnd时可以处理WM_COMMAND,还可以自定义消息发送和接受PostThreadMessagewhile(GetMessage){
TranslateMessage;
DispatchMessage;
}
http://dev.rdxx.com/VC/MFC/2004-5/31/041446348.shtml
不是“有谁在一个进程里面搞了多个消息队列的?”,这是自动做的,每当你在一个线程中调用诸如
GetMessage之类的消息函数,如果该线程没有消息队列,就会自动创建一个