读书人

不执行自定义消息(三层对话框的结构)

发布时间: 2012-03-21 13:33:15 作者: rapoo

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


[解决办法]
在第三个对话框中,

C/C++ code
::SendMessage (GetParent()->m_hWnd, WM_SETOK, (WPARAM)&tSetParam,0);
[解决办法]
楼上的正解,
GetParent()->SendMessage (,WM_SETOK, (WPARAM)&tSetParam,0);

用GetParent获取第三个窗口的父窗口,也就是第二个对话框,然后对其发送消息
[解决办法]
你的先得到DlgReceiver的窗口句柄
[解决办法]
探讨
还有,现在的问题是虽然能执行自定义消息了,却不能返回第二个对话框了,我的自定义消息函数为OnSetOk:
LRESULT CDlgReceiver::OnSetOk(WPARAM wParam, LPARAM lParam)
{
int i, res = 0;
pSetParam = (SETPARAM*)wParam; //取得所选参数
this->SetActiveWindow();……

读书人网 >VC/MFC

热点推荐