Create了很多非模态对话框(显示复制文件进度),每个对话框初始化时创建了一个工作线程进行复制文件,在线程中如何将复制文件的进度发送消息给对话框?对话框消息多线程进度条复制文件

解决方案 »

  1.   

    在线程中要能取得对话框的句柄指针,然后对这个指针SendMessage发送消息。
      

  2.   

    PostMessage,找到对应对话框窗口句柄
      

  3.   

    对话框的句柄已经传个线程了(非空),用SendMessage对话框PreTranslateMessage(MSG* pMsg)能接受到消息,但消息ID是799(WM_DWMNCRENDERINGCHANGED),取不到自定义的消息啊。求指教!
      

  4.   

    PostMessage和SendMessage 一样的,只能收到 799 和 512的消息
      

  5.   

    七夕你们不去泡妞也在刷CSDN。huayehanshan、oyljerry、worldy大神求指教啊!1、这种发送消息的方式可行不?2、为什么自能收到799和512的消息?
      

  6.   

    怎么修改这个变量?发现Create出来的多个对话框,所有的对话框句柄都是同一个值,这个也有问题啊,跟我想象的不一样。
      

  7.   

    // 定义自定义消息
    #define WM_ON_INIT_MSG WM_USER+100// 要响应消息的对话框cpp文件中
    BEGIN_MESSAGE_MAP(COptionsDepthDlg, CDialog)
    ON_MESSAGE(WM_ON_INIT_MSG,InitData) // 将自定义消息与实际的消息响应函数进行绑定
    END_MESSAGE_MAP()// 消息响应函数
    LRESULT COptionsDepthDlg::InitData(WPARAM wParam,LPARAM lParam) 
    {
    }// xxx.cpp中// 发送消息给COptionsDepthDlg对话框。 
    // m_SubForms.m_Forms[0]->GetSafeHwnd()存放的是COptionsDepthDlg对话框的句柄
    ::SendMessageW(m_SubForms.m_Forms[0]->GetSafeHwnd(),WM_ON_INIT_MSG,0,0);