如何使用添加到MFC文档/框架项目的对话框的初始化列表

How to use a initialization list for Dialog that is added to MFC Doc/Frame project

本文关键字:项目 对话框 初始化 列表 框架 添加 何使用 MFC 文档      更新时间:2023-10-16

我在MFC文档/框架项目(Single doc,MFC,VC++2010项目)中添加了一个额外的对话框(TestDialog),TestDialog.h文件显示

class CTestDialog : public CDialogEx
{
    DECLARE_DYNAMIC(CTestDialog)
public:
    CTestDialog(CWnd* pParent = NULL);   // standard constructor
virtual ~CTestDialog();
}

然后我添加了以下可变变量,我将在TestDialog.h文件中使用它公用:

BOOL        m_x;          
long        m_Type

TestDialog.cpp文件显示

CTestDialog::CTestDialog(CWnd* pParent /*=NULL*/)
    : CDialogEx(CTestDialog::IDD, pParent)
    , testdlg(0)
{
}
CTestDialog::~CTestDialog()
{
}

现在我有一个正在为frame/doc文件(在..doc.cpp文件中声明相应的变量decared在.h文件中,运行良好。但每当我想在对话框中撤销相同的东西时,尽管可变变量可以从对话框中访问,但我无法初始化变量值。所以

我想在TestDialog.cpp文件中添加m_x和m_Type的初始化列表

 :
    m_x(FALSE)
    m_Type(0)

我试着在下面添加

CTestDialog::~CTestDialog():
m_x(FALSE)
m_Type(0)
{
}

CTestDialog::CTestDialog(CWnd* pParent /*=NULL*/)
         :m_x(FALSE),m_Type(0)
    : CDialogEx(CTestDialog::IDD, pParent)
    , testdlg(0)
{
}

但它们都不起作用,并且初始化列表中的编译器compain只能在构造函数中声明。如何标记此对话框的初始化列表。

您的对话框已经有了一个初始化列表,您只需添加这样的更改:

CTestDialog::CTestDialog(CWnd* pParent /*=NULL*/)
    : CDialogEx(CTestDialog::IDD, pParent)
    , testdlg(0)
    , m_x(FALSE)
    , m_Type(0)
{
}

一般语法为:

CSomeClass::CSomeClass() : m_var1(1), m_var2(2), m_var3(3)
{
}

其中,初始值设定项列表在:之后遵循构造函数的定义,变量名称(本例中为m_var1等)用逗号分隔,初始值在括号中。与对话框一样,您也可以在初始化列表中包括基类构造函数。

对话框源代码中的布局只是将每个变量放在一个新行上。