enum { IDD = IDD_DIALOG1 }有关问题

enum { IDD = IDD_DIALOG1 }问题
enum { IDD = IDD_DIALOG1 };这个为什么要这么写?我直接用UNIT IDD=IDD_DIALOG1不就好了嘛?枚举有什么好处吗?在resource.h中也只是将#define IDD_DIALOG1  196.
希望有人能解惑,谢谢

------解决方案--------------------
引用:
enum { IDD = IDD_DIALOG1 };这个为什么要这么写?我直接用UNIT IDD=IDD_DIALOG1不就好了嘛?枚举有什么好处吗?在resource.h中也只是将#define IDD_DIALOG1  196.
希望有人能解惑,谢谢


一个是常熟,一个变量,
个人感觉使用常数在效率上会好 点,因为常熟是包含在指令中,变量要获得值需要进行内存访问
------解决方案--------------------
引用:
Quote: 引用:

因为一个对话框类可以关联多个对话框模板~
能详细说下或者给个范围不,谢谢

CDialog::Create()函数,有一个参数就是对话框模板的资源ID,你可以在资源编辑器中创建多个对话框的资源
------解决方案--------------------
这是为了好写对话框的架构. 因为不同的对话框可以使用相同的类, 不同的对话框资源.
而不同的资源又要是相同的代码.
enum { IDD = IDD_DIALOG1 }这个就能起作用了.

只要基类代码中使用IDD就能得到对话框资源的ID号,而不用写其它的代码要设置.

如果你删除掉这句, 你就可以看到使用IDD的原因了.

你要定义成变量的话, 你就需要自己修改代码了.
: CDialog(CTestDlg::IDD, pParent)  //基类构造函数的调用需要修改.

IDD是变量的话, 就需要调用这个基类构造前赋值, 并且修改成不要CTestDlg:: 

类似于这样:
CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
:IDD(IDD_TEST_DIALOG) //变量初始化
, CDialog(IDD, pParent) //构造函数
{
------解决方案--------------------
这与 C++ 的 常数 表示 有关, 早期 的MFC 是 使用 enum { IDD = IDD_DIALOG1 };
来 表示 常数 即 const (-ant), 那时 使用 const IDD = IDD_DIALOG1 会有问题。