写了一个程序,开了一个工作线程,在工作线程里用到CAsynSocket类,而CAsynSocket类里面需要处理OnConnect、OnReceive类,需要用到消息循环,该怎样处理呢?

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

    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;
    }
      

  6.   

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

  7.   

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

  8.   

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

  9.   

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