怎样从非模态对话框中返回特定的值?如IDOK

gwinner 2004-09-24 04:29:54
从模态对话框中可以用下述方法知道用户是点了OK还是Cancel:
CMyDlg dlg;
if (IDOK == dlg.DoModal())
{
...//OK button is clicked
}
else
{
..//Cancel button is clicked
}

但是,对于非模态对话框呢?
我的非模态对话框建立的代码为:
CMyUnmoduleDlg m_dlgTest;//Defined in .h file

CFatherWnd::ShowMyDlg()
{
m_dlgTest.Create(IDD_UNMODULEDLG, this);
m_dlgTest.ShowWindow(SW_SHOW);

//我想在这儿拿返回值
}

问题是,怎么得到它的返回值呢?

请高手帮忙!!

...全文
754 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizifong 2004-09-27
  • 打赏
  • 举报
回复
GetDlgCtrlID
HuiChen 2004-09-27
  • 打赏
  • 举报
回复
在父对话框中添加成员函数
void CFatherWnd::ModelessDialogClose( UINT ID )
{
if ( ID == IDOK )
// ...
else if ( ID == IDCANCEL )
// ...
}

在无模式对话框的 OnOK 和 OnCancel 函数中添加代码:
( ( CFatherWnd* ) GetParent() ) -> ModelessDialogClose( IDOK ); // 或 IDCANCEL
DestroyWindow();

注意头文件的包含

nwpulipeng 2004-09-24
  • 打赏
  • 举报
回复
帮顶混分
gwinner 2004-09-24
  • 打赏
  • 举报
回复
看来也不行。

创建者是一个COM的接口涵数,不能这样用的。
gwinner 2004-09-24
  • 打赏
  • 举报
回复
try876(彼岸),谢谢,我试试。
try876 2004-09-24
  • 打赏
  • 举报
回复
你要得到返回值无非就是想做一些处理,如调用相应的函数
可以在创建这个非模式对话框后传一个创建者的指针给对话框
然后在对话框的OK按钮响应函数中通过指针调用创建者的相应函数
  • 打赏
  • 举报
回复
CMyUnmoduleDlg加一个public的变量UINT m_nRet;
不就行了
gwinner 2004-09-24
  • 打赏
  • 举报
回复
谢谢各位,问题是CFatherWnd其实不是一个窗口(是我写法有误,sorry).它收不到消息。
老夏Max 2004-09-24
  • 打赏
  • 举报
回复
使用::PostMessage(m_MessageHwnd,WM_DLG_OK,0,0);
m_MessageHwnd应该是Create的时候使用GetSafeHwnd获得的,可以在DLG中定义一个m_MessageHwnd成员变量!
老夏Max 2004-09-24
  • 打赏
  • 举报
回复
头文件中:
#define WM_DLG_OK (WM_USER + 101)

afx_msg LRESULT OnDlgOnOK(WPARAM wParam, LPARAM lParam);
CPP文件中:
ON_MESSAGE(WM_DLG_OK,OnDlgOnOK)
DentistryDoctor 2004-09-24
  • 打赏
  • 举报
回复
不会的。
gwinner 2004-09-24
  • 打赏
  • 举报
回复
事实是,CREATE这个窗口的类收不到消息
老夏Max 2004-09-24
  • 打赏
  • 举报
回复
你无非是想在Dialog返回IDOK的时候做一些处理,可以使用自定义消息,添加消息处理函数,在消息处理函数中完成你想在Dialog返回IDOK时做的处理。
老夏Max 2004-09-24
  • 打赏
  • 举报
回复
通过自定义消息吧,很简单的
roger_ding 2004-09-24
  • 打赏
  • 举报
回复
ShowWindow立即就返回了,因为是非模态的!

如果你需要在非模态窗口退出时得到些参数,可以在OnDestory时,给父窗口发送个消息,或者自定义一个回调函数
DentistryDoctor 2004-09-24
  • 打赏
  • 举报
回复
拿不到的,通过其它方式得到吧,比如成员变量或通过消息?
DentistryDoctor 2004-09-24
  • 打赏
  • 举报
回复
拿不到。

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧