非模式对话框的使用
问题1:非模式对话框的信息反馈(45分)
非模式对话框的信息我是这样反馈的:
(在点击了某按钮后)
void C###Dlg::OnXXXButton()
{
……
CWnd* pWnd=GetParent();
if(pWnd){
……
wParam=
pWnd->SendMessage(ID_MYMSG,wParam);
}
}
在父窗口的消息映射中加了 ON_MESSAGE(ID_MYMSG, OnFunc) //#define ID_MYMSG WM_USER+1
同时,父窗口定义了OnFunc()函数:
void C###View::OnFunc(WPARAM w, LPARAM l)
{
……
}
但我跟踪时发现,发送了ID_MYMSG消息后OnFunc()函数并没有执行到,这是为什么?
问题2:只能被用一次吗?(45分)
我使用的步骤:
1. 在父窗口类中添加一个非模式对话框指针;
2. 在父窗口构造函数中用new为对话框指针申请空间;
3. 在父窗口析构函数中delete;
4. 在父窗口某一函数中显示非模式对话框:
if(!m_pNonModDlg->GetSafeHwnd())
{
m_pNonModDlg->Create(IDD_NONMODEDLG);
}
但为什么该非模式对话框只能显示一次, 再一次执行上面程序时,GetSafeHwnd()函数返回0 ?