enum { IDD = IDD_DIALOG1 }有关问题
enum { IDD = IDD_DIALOG1 }问题
enum { IDD = IDD_DIALOG1 };这个为什么要这么写?我直接用UNIT IDD=IDD_DIALOG1不就好了嘛?枚举有什么好处吗?在resource.h中也只是将#define IDD_DIALOG1 196.
希望有人能解惑,谢谢
------解决方案--------------------
一个是常熟,一个变量,
个人感觉使用常数在效率上会好 点,因为常熟是包含在指令中,变量要获得值需要进行内存访问
------解决方案--------------------
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 会有问题。
enum { IDD = IDD_DIALOG1 };这个为什么要这么写?我直接用UNIT IDD=IDD_DIALOG1不就好了嘛?枚举有什么好处吗?在resource.h中也只是将#define IDD_DIALOG1 196.
希望有人能解惑,谢谢
------解决方案--------------------
一个是常熟,一个变量,
个人感觉使用常数在效率上会好 点,因为常熟是包含在指令中,变量要获得值需要进行内存访问
------解决方案--------------------
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 会有问题。