使用属性页数组 MFC C++ 创建无模式属性表

Posted

技术标签:

【中文标题】使用属性页数组 MFC C++ 创建无模式属性表【英文标题】:Creating Modeless Property Sheet Using Property Page Array MFC C++ 【发布时间】:2013-10-20 07:02:13 【问题描述】:

我正在创建一个从 CMFCPropertySheet 派生的属性表,它是在调用初始编辑器页面时从大型机创建的。我的问题是,当调用附加页面时,我希望为其创建一个新选项卡。调用的每个页面都将由同一个类派生,但最大页面数未知,因此需要将其定义为

    CEditorPage *m_editorpage[];

但是编译器抱怨它使用了一个零大小的数组。 在析构函数中,我将在 for 循环中创建的页面从 0 删除到工作表中的页面数。 在销毁后,我删除了 this 指针。 程序崩溃并停止在

    delete this;

如果我不使用数组,它不会崩溃。但是因为我在每个属性页中使用相同的类页并且我不知道会有多少我需要使用一个零大小的数组。 无论哪种方式,我都会遇到内存泄漏。

如何在属性表中创建一个基于 CMFCPropertyPage 的零大小数组,以便在运行时添加其他页面并在关闭属性表时执行适当的清理。在我尝试过的每种方法中,我都会遇到崩溃或内存泄漏。

【问题讨论】:

【参考方案1】:

尝试使用动态数组

CEditorPage *m_editorpage = new CEditorPage[_num_of_editorpage];
....
delete[] m_editorpage ;

【讨论】:

【参考方案2】:

使用 std::vector 类或类似类怎么样?

【讨论】:

以上是关于使用属性页数组 MFC C++ 创建无模式属性表的主要内容,如果未能解决你的问题,请参考以下文章

(转载)VS2010/MFC编程入门之十五(对话框:一般属性页对话框的创建及显示)

VS2010-MFC(对话框:属性页对话框及相关类的介绍)

无模式对话框中的 MFC C++ 显示模态对话框

如何从自定义对话框工具栏属性页隐藏CMFCToolBar?

在 MFC 中管理类似控件行的数据的最佳方法是啥?

为啥从属性页调用afxmessagebox到扩展dll时mfc死锁