我做了一个界面,在主对话框上有其它对话框,想问问怎么把主对话框上的消息发送到子对话框上去?

解决方案 »

  1.   

    过通注册消息
    const UINT    wm_Find = RegisterWindowMessage( FINDMSGSTRING )
    BEGIN_MESSAGE_MAP( CMyWnd, CMyParentWndClass )
        ON_REGISTERED_MESSAGE( wm_Find, OnFind )
    END_MESSAGE_MAP( )
    然后在你要对话框同样在注册一个
    不用再映射了
    就可以了在子对话框向主对话框对消息了
      

  2.   

    FindWindowEx:可以得到子窗口的HWND,前提是使用FindWindow得到父窗口的HWNDSendMessage发送消息
      

  3.   

    如果是子对话框的话 可以试下将其做为主对话框的一个成员变量然后在主对话框消息响应函数处直接调用子对话框的函数就可以了子对话框的句柄可以通过GetSafeHwnd()来获得如CChildDlg m_cDlg; m_cDlg.GetSafeHwnd()得到的就是子对话框的句柄
      

  4.   

    用FindWindowEx根据对话框的标题找到所需要传递消息的窗口,然后SendMessage即可。
      

  5.   

    在主对话框头文件中定义:公有变量 CBudDlg* subDlg;然后在你要弹出对话框的位置,用
    subDlg = new CBudDlg(this); 
    subDlg->Creat(......); subDlg->ShowWindow(WM_SHOW); 为别面多次点击出错(这里可以把主话框的按钮Disable了)
    (也可以采用其他的方法来设定只弹出一个Dialog)
      

  6.   

    然后发送消息就可以了:SendMessage(subDlg->m_hWnd, ......);
    如果Disable了按钮,就要在subDlg关闭的时候发送一个消息给主对话框。
      

  7.   

    要 发送消息前 先创建子对话框 得到句柄
    SendMessage 传进去