使用wxCreatePersistentObject将选项卡保存在内存中

时间:2016-04-06 20:24:32

标签: c++ wxwidgets

我正在使用wxCreatePersistentObject在内存中保存标签,但是我遇到了一些问题。

使用http://docs.wxwidgets.org/trunk/overview_persistence.html#persistence_defining 我将一步一步地创建这个持久化类。我想保存tabpanel,它继承自auiNotebook。

$(".comment").html(html);

这是我的定义:

class myPersistentClass : public wxPersistentObject{
public:
  myPersistentClass(TabPanel *panel);
  wxString GetKind() const;
  wxString GetName() const;
  void Save() const;
  bool Restore();
  TabPanel * panel_;
  wxPersistentObject * wxCreatePersistentObject (PropertyTabPanel *panel);
};

它为构造函数提供了编译器错误。我不确定我做错了什么。如果有人能告诉我我是否正在创建这个wxPersistentObject

1 个答案:

答案 0 :(得分:0)

目前还不清楚你在这里尝试做什么。持久对象在它们被销毁时将其状态保存在持久存储中(例如在磁盘上),并在它们再次创建时将其恢复。一个典型的例子是一个顶层窗口,记住它在程序运行之间的大小和位置,或记住它最后选择的页面的笔记本。因此,如果您想以这种方式保存TabPanel州,则应定义PersistentTabPanel,但除非TabPanel不是从wxWindow派生,否则您应该继承它来自wxPersistentWindow<TabPanel>而不是wxPersistentObject本身。

至于ctor中的错误,在ctor初始化列表中调用wxCreatePersistentObject()只是从C ++的角度来看没有任何意义,你使用初始化列表来初始化基类和成员,当然,这个功能都不是。作为链接到州的文档,您需要定义此函数,并使用TabPanel*