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