CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

求救!!!怎样使工作线程处理消息循环?

楼主netree(白衣痴人)2006-03-03 11:37:52 在 VC/MFC / 进程/线程/DLL 提问

写了一个程序,开了一个工作线程,在工作线程里用到CAsynSocket类,而CAsynSocket类里面需要处理OnConnect、OnReceive类,需要用到消息循环,该怎样处理呢? 问题点数:50、回复次数:10Top

1 楼lzzqqq(Jonersen)回复于 2006-03-03 11:45:06 得分 0

DWORD   dwThread(LPVOID   lp)  
  {  
      /*......  
      你的乱七八糟的初始化,操作什么的....  
      */  
   
      MSG   msg;  
      while(GetMessage(&msg,NULL,0,0)  
      {  
          TranslateMessage(&msg);  
          DispatchMessage(&msg);  
      }  
      return   EXIT_SUCCESS;  
  }Top

2 楼laiyiling(陌生人[MVP])回复于 2006-03-03 11:51:52 得分 0

http://support.microsoft.com/kb/192570/Top

3 楼netree(白衣痴人)回复于 2006-03-03 14:28:52 得分 0

To   lzzqqq(Jonersen)  
   
  DWORD   dwThread(LPVOID   lp)  
  {  
      /*......  
      你的乱七八糟的初始化,操作什么的....  
  (我在这里代码里就调用了Connect函数引起了OnConnect消息,而这时候消息循环还没有产生啊,所以程序还是运行不起来啊,怎么办呢,如不在这里调用,怎么办呢?  
      */  
   
      MSG   msg;  
      while(GetMessage(&msg,NULL,0,0)  
      {  
          TranslateMessage(&msg);  
          DispatchMessage(&msg);  
      }  
      return   EXIT_SUCCESS;  
  }  
  Top

4 楼netree(白衣痴人)回复于 2006-03-03 14:35:54 得分 0

To   laiyiling(陌生人)  
  微软的那个示例里好像用的用户界面线程吧Top

5 楼sboom(+-LingCh-+)(爱美人不爱VC)回复于 2006-03-03 19:14:36 得分 0

DWORD   dwThread(LPVOID   lp)  
  {  
      /*......  
      你的乱七八糟的初始化,操作什么的....  
      */  
   
      MSG   msg;  
      while(GetMessage(&msg,NULL,0,0)  
      {  
          TranslateMessage(&msg);  
   
          switch(msg.MESSAGE_ID/*忘记了这个叫什么名字*/){  
                  case   WM_XXX:  
                          DoXXX();  
                          break;  
                  case   WM_YYY:  
                          DoYYY();  
                          break;  
          }  
      }  
      return   EXIT_SUCCESS;  
  }  
  Top

6 楼newcore(to be or not to be, it's a question.)回复于 2006-03-04 11:24:59 得分 0

帮你看看  
  Top

7 楼orbit(走了走了)回复于 2006-03-04 11:38:04 得分 0

CAsynSocket会自己创建一个隐藏窗口分派消息,只要创建窗口,线程就有消息循环了Top

8 楼JetLuo(JetLuo)回复于 2006-03-04 20:26:01 得分 0

其实可用用户界面线程CWinThread代替一般的工作者线程,因为它具有消息循环的功能。Top

9 楼BBirdlyh(BBird)回复于 2006-03-04 22:52:37 得分 0

1   CAsynSocket   本身就是异步的了,还用线程干什么  
  2   CAsynSocket   本身包含一个窗口,所有他的消息会从这个窗口走,不用担心这个问题Top

10 楼newcore(to be or not to be, it's a question.)回复于 2006-03-05 14:27:32 得分 0

两种方法:  
  1、用户界面线程CWinThread代替工作者线程  
  2、工作者线程中自己实现消息循环,这个我已经作了个测试,如果要,可以发给你。  
   
  对于   CAsynSocket   本身包含一个窗口,所有他的消息会从这个窗口走,不用担心这个问题,同意  
   
  Top

相关问题

  • 在线程中处理消息
  • 请教:MFC是否每个popup窗口使用了一个线程处理消息循环及模拟模态对话框问题
  • ◆◆◆关于线程的消息循环问题◆◆◆
  • 新线程可以有自己的消息循环吗?
  • 用tthread建立的线程消息循环问题
  • 在MFC的主线程中还能使用消息循环吗——————?
  • 在单线程的程序中能处理window的消息吗?
  • SDK中,CreateThread()创建的线程怎么处理消息?
  • 线程的消息环怎么做?怎样实现消息处理??
  • 用户界面线程的消息循环并不完全独立?

关键词

  • 线程
  • 循环
  • 消息
  • null
  • casynsocket
  • 消息循环
  • msg
  • 工作者
  • translatemessage
  • lpvoid lp

得分解答快速导航

  • 帖主:netree

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo