从模态对话框中可以用下述方法知道用户是点了OK还是Cancel:
CMyDlg dlg;
if (IDOK == dlg.DoModal())
{
...//OK button is clicked
}
else
{
..//Cancel button is clicked
}但是,对于非模态对话框呢?
我的非模态对话框建立的代码为:
CMyUnmoduleDlg m_dlgTest;//Defined in .h fileCFatherWnd::ShowMyDlg()
{
m_dlgTest.Create(IDD_UNMODULEDLG, this);
m_dlgTest.ShowWindow(SW_SHOW);//我想在这儿拿返回值
}问题是,怎么得到它的返回值呢?请高手帮忙!!
CMyDlg dlg;
if (IDOK == dlg.DoModal())
{
...//OK button is clicked
}
else
{
..//Cancel button is clicked
}但是,对于非模态对话框呢?
我的非模态对话框建立的代码为:
CMyUnmoduleDlg m_dlgTest;//Defined in .h fileCFatherWnd::ShowMyDlg()
{
m_dlgTest.Create(IDD_UNMODULEDLG, this);
m_dlgTest.ShowWindow(SW_SHOW);//我想在这儿拿返回值
}问题是,怎么得到它的返回值呢?请高手帮忙!!
解决方案 »
- 不能显示对话框
- UDP发送的缓存中有动态分配的int数组,但是接收不到数组值,其他的内容都可以接收到
- 很奇怪的CRITICAL_SECTION??
- MFC的CListCtrl控件怎么实现分页技术?
- 实在没分了,请问HBITMAP如何转CDIBBitmap?
- 为什莫在98下FillRgn会出错,急急急急!!!!!!!!!!!!!!
- FindWindow和FindWindowEx为什么获得不到标准编辑框的窗口句柄?
- 散分! 调查
- CString变量,想取走第一个字符,并把第一个字符从变量中取走,如何实现?
- GetDlgItem 的问题
- 关于SB_THUMBTRACK 来者有分
- Win32 Simple Data Types 中LP***(以LP开头的数据类型)和P****(以P开头的数据类型)有什么区别吗?
#define WM_DLG_OK (WM_USER + 101)afx_msg LRESULT OnDlgOnOK(WPARAM wParam, LPARAM lParam);
CPP文件中:
ON_MESSAGE(WM_DLG_OK,OnDlgOnOK)
m_MessageHwnd应该是Create的时候使用GetSafeHwnd获得的,可以在DLG中定义一个m_MessageHwnd成员变量!
不就行了
void CFatherWnd::ModelessDialogClose( UINT ID )
{
if ( ID == IDOK )
// ...
else if ( ID == IDCANCEL )
// ...
}在无模式对话框的 OnOK 和 OnCancel 函数中添加代码:
( ( CFatherWnd* ) GetParent() ) -> ModelessDialogClose( IDOK ); // 或 IDCANCEL
DestroyWindow();注意头文件的包含