MFC 对话框默认OK和CANCEL的代码在哪

keep_forward 2014-01-12 11:15:47
今天新建对话框的时候,系统一如既往的给了我OK和CANCEL两个按钮,本来想删除,无意间去查下代码,却发现一无所获,完全不了解与他们相关的代码在哪。在资源里面没有找到ID,在对话框相关的代码中也没有找到。请问各位怎么解释啊?
...全文
750 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
encoderlee 版主 2014-01-12
  • 打赏
  • 举报
回复
在资源里是有它们的ID的:
IDOK和IDCANCEL里

在cpp文件里也有它们的代码。
IDOK默认对应的响应函数是CDialog::OnOK
IDCANCEL默认对应的响应函数是CDialog::OnCancel
都在CDialog的定义源文件dlgcore.cpp里,是MFC框架代码的一部分,不能删除。

总之创建好工程后,如果你没有给这两个按钮添加过变量或添加过响应函数的话,直接在界面编辑器上把它删掉就行。如果你给这两个按钮添加过变量或添加过响应函数的话,在你的CxxDlg.h CxxDlg.cpp文件里可以找到相应的代码。就像你在界面编辑器上拖一个新按钮,然后什么也不做,.h .cpp文件里是不会生成任何代码一样。直接在界面编辑器上把它删了就行。
hdg3707 2014-01-12
  • 打赏
  • 举报
回复
你双击这两个按钮就会生成生载消息函数了,你可以在里面加上自己要处理的销毁任务,也可以什么都不加,执行默认的代码。 你一定要想要知道这两个按钮的代码,就单步执行,跟踪到内部代码就会看到
zhuyf87 2014-01-12
  • 打赏
  • 举报
回复
zhuyf87 2014-01-12
  • 打赏
  • 举报
回复
如果你在子类中没有重写OnOK、OnCancel,那直接在Resource View界面编辑器上删掉按钮就行了。
zhuyf87 2014-01-12
  • 打赏
  • 举报
回复
如果子类不处理,那父类CDialog会处理。
void CDialog::OnOK()
{
	if (!UpdateData(TRUE))
	{
		TRACE(traceAppMsg, 0, "UpdateData failed during dialog termination.\n");
		// the UpdateData routine will set focus to correct item
		return;
	}
	EndDialog(IDOK);
}

void CDialog::OnCancel()
{
	EndDialog(IDCANCEL);
}
OnOK、OnCancel都是virtual,可以在子类对话框中override。

protected:
	virtual void OnOK();
	virtual void OnCancel();
xiaohuh421 2014-01-12
  • 打赏
  • 举报
回复
对话框的基类处理了这两个按钮的消息, 因为它们有标准的ID号, IDOK和IDCANCLE, 如果你修改了这两个按钮的ID号, 你就会发现, 它们无效了. 你实际上你可以自己修改它们的响应. 双面按钮即可以添加, 然后在里面调用对应 的函数, OnOK等等.
xggabc 2014-01-12
  • 打赏
  • 举报
回复
我在MFC自定义的对话框类中增加这样一个成员对象CSendMsg pdu, 成功 但是如果用CSendMsg pdu[254]; 则失败。 即使不在这里加,声明为全局变量也是失败。不能正确运行程序。 要怎么加才能成功?

16,480

社区成员

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

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

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