一个线程有几个消息队列?

winks 2005-07-22 12:53:30
一个线程有几个消息队列?
比如我
AfxBeginThread(func,0);

func()
{
...
//产生对话框(可以是无模态的),这样的话有几条消息队列呢?是不是线程一条,对话框一条?
...
}
...全文
431 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
DentistryDoctor 2005-07-22
  • 打赏
  • 举报
回复
一个UI线程一个消息队列。
newbiestar 2005-07-22
  • 打赏
  • 举报
回复
线程的是线程的,对话框是对话框的,不是一个东西么……
winks 2005-07-22
  • 打赏
  • 举报
回复
谢谢各位
tutu_cloud 2005-07-22
  • 打赏
  • 举报
回复
对于Windows本身来说,好像不区分UI thread和worker thread。一般只要加上GetMessage、PostMessage、DispatchMessage等函数的循环,这个线程就拥有了消息处理能力。一个窗口的消息总是被发送到它所被创建时所在的线程中,如果线程提前推出,自然就不会接收到消息了。而且如果没记错的话,线程是无法响应TerminateThread函数的,操作系统会强行中止某线程的运行,此时被中止的线程不会得到任何提示。
ForTopLevel 2005-07-22
  • 打赏
  • 举报
回复
每个线程都有,应该是一个,不然它怎么接受外面的消息?难道它堵塞在那里吗?比如,每个线程都可以响应TerminateThread函数,那就是说它们都有一个消息循环,我不理解的是UI线程和工作线程,它们的循环机制是不是同一个,希望高人回答.
AntonlioX 2005-07-22
  • 打赏
  • 举报
回复
一个UI线程一个消息队列。
winks 2005-07-22
  • 打赏
  • 举报
回复
哦,原来消息队列保存了不同的消息类型。
在线程中有这样的处理
func()
{
//无模态对话框创建
//sendmessage给无模态对话框
return ; //我return掉,对话框就无法处理消息了,是因为线程结束的原因吗?
}
有没有什么办法再让对话框处理消息呢?我用sleep循环不能成功,后来在return前加上peekmessage就可以了,这是怎么会事呢?谢谢指教。
  • 打赏
  • 举报
回复
一个线程一个消息队列,不是ui线程也有,所谓的UI线程和工作线程之分只是MFC的概念
老夏Max 2005-07-22
  • 打赏
  • 举报
回复
一个(UI线程)或者没有(工作线程)!
lianglp 2005-07-22
  • 打赏
  • 举报
回复
只要是一个线程,最多有一个线程消息队列。
消息队列里面保存了很多类型的消息。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧