我正在使用用户界面创建简单的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*);
};
最佳答案
要回答标题问题,您不必声明MyFrame
,而只需创建并直接使用wxFrame
并使用Bind()
来连接不同的事件处理程序。在除了最简单的情况以外的所有情况下,通常都有一个MyFrame
类来集中窗口的数据和事件处理程序,这是很方便的,但绝不是必需的。
如果您决定将所有内容保留在MyApp
中,则可能会发现wxGetApp()对于从代码中的各个位置访问它都很有用。
关于c++ - 我必须声明自己的wxFrame类吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55704151/