在ATL中,需要和调用的动态库进行消息传递。

解决方案 »

  1.   

    ATL调用的动态库,是通过HWND来发送消息的,如果ATL中没有有效的窗口句柄传递给它。
    那ATL接收不到。我想问一下你所说的消息循环是以什么窗口来接收的。
    我开始是这么做的,我在ATL中传递窗口句炳this->m_hWnd给动态库,结果发现
    this->m_hWnd为空。
      

  2.   

    在一个线程中,可以不用任何窗口而使用消息队列。但因为消息队列只有在GUI线程中才存在,所以你要额外调用某些GUI函数以初始化消息队列。例如:...
    PAINTSTRUCT ps;
    BeginPaint(NULL, &ps); // 初始化gui库,可以换成别的gui api
    MSG msg;
    while(GetMessage(&msg,0, 0, 0))
    {
       // 做你要做的事
    }
    EndPaint(NUL, &ps);
    ...这样做,消息循环就可以处理从别的线程用PostThreadMessage发送给当前线程的消息了。
      

  3.   

    可以向线程发消息,不一定非要向窗口发消息,用PostThreadMessage