关于对话框IDOK的返回问题,解决者立即给分

sunhang 2002-09-04 10:01:57
开发环境:Win98+VC5
问题:CDerivedDialog派生于CDialog
CMyDialog:CDerivedDialog

当按下确定按钮(IDOK),本应返回IDOK,父对话框才可做相应操作。但实际上却把当前对话框刷新了一遍,再次点击时才退出,并且返回的不是IDOK值。

试过捕获Clicked事件,但是使用CDialog::OnOK()和CDialog::EndDialog(IDOK)均无用。

请问如何解决此问题,谢谢!
能解决者立即给分,绝不食言。
...全文
460 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
cris919 2002-09-06
  • 打赏
  • 举报
回复
好象是窗口中嵌套了窗口引起的
zhang865 2002-09-06
  • 打赏
  • 举报
回复
应该没有错的,看我的,
void CAddMan::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);
if(m_npassword != m_npassword1)
{
MessageBox("密码不符");
return ;
}
CDialog::OnOK();
}


if(AddMan_dlg.DoModal()==IDOK)
{
user_name = AddMan_dlg.m_nname1;
user_password = AddMan_dlg.m_npassword;
Invalidate();
}
Mr_Ldh 2002-09-06
  • 打赏
  • 举报
回复
DEBUG一下看看
zhazhalg 2002-09-06
  • 打赏
  • 举报
回复
不应该是在CDialog类中处理OnOK()函数
而是应该在父对话框的视图类中声明一个CDialog类的对象
例如m_CDialog
在父对话框的视图类中进行消息的处理,例如
void CDlgView::Onbotton()
{
if(m_CDialog.Domodal()==IDOK)
{
........
}
}
bigbuffalo 2002-09-06
  • 打赏
  • 举报
回复
up
puyinghua 2002-09-04
  • 打赏
  • 举报
回复
点两次才返回? 怪问题啊……

要不在 CMyDialog::OnOk()里调用销毁函数吧
linuxzbd 2002-09-04
  • 打赏
  • 举报
回复
其实不管你的ID值是否是IDOK只要在这个按钮的响应函数里调用基类的
CDialog::OnOK();
就可以。
你可以建立一个新的项目用来测试一下。
lc79 2002-09-04
  • 打赏
  • 举报
回复
奇怪的问题,没遇到过,怎么会这样呢?把你的所有代码弄出来吧!
aben456 2002-09-04
  • 打赏
  • 举报
回复
每一个类都要重载,才能返回自己的IDOK
siphonelee 2002-09-04
  • 打赏
  • 举报
回复
代码贴出来看看
webber84 2002-09-04
  • 打赏
  • 举报
回复
我试了一下好像没有你说的问题嘛。不过我用的是VC6。
webber84 2002-09-04
  • 打赏
  • 举报
回复
我试了一下好像没有你说的问题嘛。不过我用的是VC6。
sunhang 2002-09-04
  • 打赏
  • 举报
回复
按钮的ID值是IDOK,
各位的方法我都曾试过,还是同样的问题。
另我的对话框的IDCANCEL也需要点两次后才能退出,重载后不论是CDialog::OnOK()还是CDialog::EndDialog(IDOK)均无用。
albert 2002-09-04
  • 打赏
  • 举报
回复
重载CMyDialog::OnOK(),让它直接return CDialog::OnOK()
bigbuffalo 2002-09-04
  • 打赏
  • 举报
回复
首先确认你的“确认按钮”的“ID号”是否为“IDOK”,然后重载CMyDialog::OnOK().
everandforever 2002-09-04
  • 打赏
  • 举报
回复
CMyDialog mydlg;
int result = mydlg.DoModal();
if( result == IDOK )
{}
ZHENG017 2002-09-04
  • 打赏
  • 举报
回复
直接SendMessage(WM_CLOSE,0,0);
cadinfo 2002-09-04
  • 打赏
  • 举报
回复
原理上应该在CDerivedDialog的OnButtonDown事件中调用CDialog::OnOK()
不应该有什么问题啊。

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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