2017-11-19 4 views
0

MyFrameのコードを書いています。 wxWizardでMyFrame目次MyPageInWizard1の一部にしたいです。 MyFrameのオブジェクトを作成してMyPageInWizard1wxWizardに使用できる方法はありますか?または、そのページにMyFrameのコードをコピーする必要がありますか?WxFrameオブジェクトはwxWizardのwxWizardPageSimpleから継承した別のクラスの一部ですか?

MyFrame::MyFrame(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style) 

私はこれを行っていますが、そのMyFrameの内容は表示されません。

MyPageInWizard1::MyPageInWizard1(wxWizard *parent, wxWizardPage *prev, wxWizardPage *next)MyWizardPage(1, parent, prev, next) 
{ 
SetBackgroundColour(wxColour(255, 255, 255)); 

wxBoxSizer* bSizer3; 
bSizer3 = new wxBoxSizer(wxVERTICAL); 
MyHeading = new wxStaticText(this, wxID_ANY, wxT("Some Heading"), wxDefaultPosition, wxDefaultSize, 0); 
MyHeading->Wrap(-1); 
MyHeading->SetFont(wxFont(14, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxT("Arial"))); 

bSizer3->Add(MyHeading, 0, wxALIGN_CENTER | wxALL, 5); 
frame = new MyFrame(NULL); 
bSizer3->Add(frame, 0, wxALIGN_CENTER | wxALL, 5); 
this->SetSizer(bSizer3); 
} 
+0

'frame = new MyFrame(this);'を呼び出してみてください。しかし、一般的にはなぜそれをしたいのですか?それは非常に奇妙なデザインになります。 MyFrameクラス内でパブリック関数を作成し、この関数をウィザード内で呼び出すこともできます。これはより良いでしょう。あるいは、MyFrameクラスを完全に取り除き、ウィザードを使うだけです。 – Igor

答えて

0

wxFrameあなたはwxWizardを含め、他のウィンドウの内側にそれを置くことができないことを意味し、常にトップレベルウィンドウです。

希望することをするには、コードをリファクタリングして、wxPanelに由来する新しいMyPanelクラスにフレームの内容を入れる必要があります。フレームにはMyPanelが含まれており、ウィザード内にはMyPanel(別の)を作成することもできます。

+0

ええ、ありがとう – alohamora

関連する問題