有一模态对话框,需要由另一线程在其中动态显示一些内容。如何保证在向该窗口postmessage时窗口句柄是有效的呢?

解决方案 »

  1.   

    postmessage,是由另一线和发出的。
      

  2.   

    线程中,一定有窗口的HWND吧
    每次县城在发送数据之前先判断IsWindow(HWND),有效再发送数据我个人不赞同你这种数据的推送方式,耦合性太强了
    建议这样  UI  -  Data  - Thread
    抽象一个独立的数据结构来描述需要绘制的数据,线程 还有 UI通过互斥锁来访问Data
      

  3.   

    UI modal wnd:
    BOOL m_bWndInvalidate;
    construct:
    m_bWndInvalidate= fale;InitDialog:
    m_crisec_wnd.Lock();
    m_bWndInvalidate = true;
    m_crisec_wnd.Unlock();
    OnClose:
    m_crisec_wnd.Lock();
    m_bWndInvalidate = true;
    m_crisec_wnd.Unlock();work thread:ThreadCallBack( lpvoid pData)
    {
      CUIWnd * pWnd = (CUIWnd*)pData;
      pWnd->ExeWork();}
    CUIWnd::ExeWork()
    {
      m_crisec_wnd.Lock();
     if ( m_bWndInvalidate )
     {
      PostMessage( CUIWnd::CM_REFRESH_TRANSLIST, 0, 0);
     }
     m_crisec_wnd.Unlock();
    }