我的程序不执行自定义消息。
    我的程序是对话框结构的,主对话框pTestDlg调用第二个对话框DlgReceiver,第二个对话框DlgReceiver调用第三个对话框DlgSender,第三个对话框DlgSender是消息发送者,第二个对话框DlgReceiver是消息接收者。
    我调试后发现,应该是消息发送者中的这句话有问题:
    AfxGetApp()->GetMainWnd()->SendMessage(WM_SETOK, (WPARAM)&tSetParam,0);/*发现消息,    传递参数*/
    其中WM_SETOK是我的自定义消息。
   问题应该在于GetMainWnd(),这个应该是把消息发送到主对话框pTestDlg中了,而我想把消息发送到DlgReceiver。只是应该怎么改,还请各位指教一下,不胜感激!

解决方案 »

  1.   

    在第三个对话框中,
    ::SendMessage (GetParent()->m_hWnd, WM_SETOK, (WPARAM)&tSetParam,0);
      

  2.   

    楼上的正解,
    GetParent()->SendMessage (,WM_SETOK, (WPARAM)&tSetParam,0);用GetParent获取第三个窗口的父窗口,也就是第二个对话框,然后对其发送消息
      

  3.   

    你的先得到DlgReceiver的窗口句柄
      

  4.   

    还有,现在的问题是虽然能执行自定义消息了,却不能返回第二个对话框了,我的自定义消息函数为OnSetOk:
    LRESULT CDlgReceiver::OnSetOk(WPARAM wParam, LPARAM lParam)
    {
    int i, res = 0;
    pSetParam = (SETPARAM*)wParam; //取得所选参数
    this->SetActiveWindow(); //激活当前窗口 return TRUE;
    }执行完OnSetOk后,就没有反应了,一直处于“正在运行”状态,我查了,this确实指向了CDlgReceiver。
    我的想法是:在第3个对话框CDlgSender设置参数,按下“确定”后发送WM_SETOK给第2个对话框CDlgReceiver,然后在CDlgReceiver的OnSetOk激活CDlgReceiver窗口,但发现不能激活,第2个对话框始终不出现。