我在现有的资源文件中定义了一个新对话框及其控件。我还创建了一个新文件,它将处理从此对话框生成的事件。但我不确定如何连接这两者。
是声明enum { IDD=IDD_NEW_DIALOG };
连接两者所需的一切?或者我们应该添加一些其他声明?
在 MFC 中通常完成此操作的方法是在资源编辑器中定义一个对话框模板(就像您所做的那样),然后在 C++ 中从 CDialog 派生一个类并将其与对话框模板关联起来(这听起来就像您已经完成的那样) - 还不完全清楚)。
实际上将两者关联起来的是 CDialog 代码的构造函数。如果您查看 MFC 类向导自动生成的对话框相关代码,您将在构造函数实现中看到如下内容:
CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/) : CDialog(CMyDlg::IDD, pParent)
其中 CMyDlg::IDD 被定义为一个枚举,其值为新对话框模板的标识符。正是这个使得这一切发生,而不是枚举的声明。你可以将其修改为
CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/) : CDialog(IDD_NEW_DIALOG, pParent)
它仍然可以工作(假设 IDD_NEW_DIALOG 是资源中对话框的模板 id),因为所发生的只是对话框 id 被传递到构造函数中。
一般来说,始终值得记住的是,尽管最初出现,MFC 并不通过编译器魔法绑定到 Windows - 它都是通过 C++ 和一些宏完成的。
编辑:DIALOGEX 和 DIALOG 声明 Windows 理解的对话框资源格式略有不同:前者比后者新。然而,两者至少从 Windows 95 就已经存在,所以这并不是一个非常显着的区别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)