CDialogEx构造函数和继承的Create()方法
CDialogEx constructor and inherited Create() method
当我从对话框资源 ID 以编程方式创建非模态对话框时,我使用以下代码:
CDialogEx myDialog(IDD_DIALOG1, this);
...
myDialog.Create(IDD_DIALOG1, this);
可以看出这不太实用,因为需要传递两次对话 ID。
我对创建对话框的理解有误吗?
有没有办法避免这种重复?
MFC class CDialogEx
提供构造函数的原因是什么
CDialogEx(UINT nIDTemplate, CWnd* pParent=NULL);
也是一种继承方法
virtual BOOL CDialog::Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
这迫使我重复对话 ID?
背后的原因是我想从 CDialogEx
派生一个自己的 class myDialogClass
但此时不想分配 ID。将虚拟 ID 传递给 CDialogEx
构造函数可能没问题吗?
我想在创建对话框时分配 ID window,而不是之前。
class MyDialogClass: public CDialogEx{
...
public:
MyDialogClass(CWnd* pParent=NULL):CDialogEx(DUMMY_ID, pParent){}
}
此外,我想将我的对话框 class 提取到自己的库(MFC 扩展库)中,并在其他代码中使用它。
我的对话框 class 为普通 DC 提供了额外的内存 DC,但这可能只是任何其他功能。
我想在多种情况下使用此附加功能。
“我对创建对话框的理解有误吗?” 有两种情况可以使用对话框:模态和非模态。你混合他们:
CDialog
& CDialogEx
提供了一个无参数的构造函数 可以用于无模式场景。您的代码变为:
CDialogEx myDialog();
// ...
myDialog.Create(IDD_DIALOG1, this);
有关如何正确实现无模式对话框的详细信息,请参阅this。
当我从对话框资源 ID 以编程方式创建非模态对话框时,我使用以下代码:
CDialogEx myDialog(IDD_DIALOG1, this);
...
myDialog.Create(IDD_DIALOG1, this);
可以看出这不太实用,因为需要传递两次对话 ID。 我对创建对话框的理解有误吗? 有没有办法避免这种重复?
MFC class CDialogEx
提供构造函数的原因是什么
CDialogEx(UINT nIDTemplate, CWnd* pParent=NULL);
也是一种继承方法
virtual BOOL CDialog::Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
这迫使我重复对话 ID?
背后的原因是我想从 CDialogEx
派生一个自己的 class myDialogClass
但此时不想分配 ID。将虚拟 ID 传递给 CDialogEx
构造函数可能没问题吗?
我想在创建对话框时分配 ID window,而不是之前。
class MyDialogClass: public CDialogEx{
...
public:
MyDialogClass(CWnd* pParent=NULL):CDialogEx(DUMMY_ID, pParent){}
}
此外,我想将我的对话框 class 提取到自己的库(MFC 扩展库)中,并在其他代码中使用它。 我的对话框 class 为普通 DC 提供了额外的内存 DC,但这可能只是任何其他功能。 我想在多种情况下使用此附加功能。
“我对创建对话框的理解有误吗?” 有两种情况可以使用对话框:模态和非模态。你混合他们:
CDialog
& CDialogEx
提供了一个无参数的构造函数 可以用于无模式场景。您的代码变为:
CDialogEx myDialog();
// ...
myDialog.Create(IDD_DIALOG1, this);
有关如何正确实现无模式对话框的详细信息,请参阅this。