我的mfc 程序有两个对话框,我在一个对话框上创建了一个按扭消息响应函数,然后我想点击另外一个对话框的菜单项也能进入这个函数,菜单是CWinpcapDlg里的,按扭是CSettingDlg类里的,现在按扭的消息响应函数我已经写好了,现在就是怎么添加点功能使点击菜单也能调用这样一个消息响应函数,谢谢!!!

解决方案 »

  1.   

    1.你就不能把这个函数的公用部分拿出来,写在一个全局函数里,这样这两个对话框都能响应了.
    2.如果能够得到CSettingDlg的句柄,就直接调用sendmessage,发送一个消息就可以了,.
      

  2.   

    我是这样写的,
    #define WM_MENUSEND WM_USER+3
    void CWinpcapDlg::OnStartCapture_Menu() 
    {     ::PostMessage(m_temphwnd, WM_MENUSEND, 0, (LPARAM)0);

    }然后
    afx_msg void OnMenuSend(WPARAM wParam, LPARAM lParam);
    ON_MESSAGE(WM_MENUSEND, OnMenuSend)
    void CSettingDlg::OnMenuSend(WPARAM wParam, LPARAM lParam)
    {
    AfxMessageBox("hehe");
    OnStartCapature();
    }可就是进入不了OnMenuSend()函数,什么原因啊
      

  3.   

    在OnStartCapture_Menu()中看一下m_temphwnd的值,是否是你CSettingDlg的句柄。
      

  4.   

    正确啊,我是这样做的,而且已经用过了,CWnd *p = AfxGetApp()->m_pMainWnd; //得到应用程序的主窗口的指针
        CWinpcapDlg *pdlg = (CWinpcapDlg *)p;
    pdlg->m_temphwnd = m_hWnd;//把CSettingDlg的窗口句柄传给主对话框