使用属性页数组 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++ 创建无模式属性表的主要内容,如果未能解决你的问题,请参考以下文章