我必须声明自己的wxFrame类吗?

时间:2019-04-16 08:50:45

标签: c++ user-interface wxwidgets

我正在使用用户界面创建简单的c ++应用程序。我已经编写了具有所需机制的类,现在必须使用wxWidgets显示其某些组件。 MyApp包含该类的对象,但是在处理事件时MyFrame中也需要它们。如果不将指向该对象的指针传递到MyFrame并在MyApp::OnInit函数中实现所有功能,那将会更加舒适。有可能吗?

// should contain informations about game state, players, gameboard, etc
class MyApp : public wxApp {
    GameBoard gb;
    Player player;
    bool lightTheme;
public:
    virtual bool OnInit();
};
// should contain only window layout, button events, etc
class MyFrame : public wxFrame {
    GameBoard *gb;
    Player *player;
    bool *lightTheme;

    std::vector<wxStaticBitmap*> cardImages;
// some events here
    void displayImages(wxGridSizer*);
public:
    MyFrame(GameBoard*, Player*, bool*);
};

1 个答案:

答案 0 :(得分:1)

要回答标题问题,您不必声明MyFrame,只需创建并直接使用wxFrame并使用Bind()来连接不同的事件处理程序即可。在除最简单的情况以外的所有情况下,<{>} 通常是很方便的,MyFrame类集中了窗口的数据和事件处理程序,但这不是任何必需的方法。

如果您决定将所有内容保留在MyApp中,则可能会发现wxGetApp()对于从代码中的各个位置访问它都很有用。