我正在尝试使用wxIS_KIND_OF宏获取wxSizer类类型。几秒钟后,我的程序完成,但没有显示我的应用程序的主窗口。
这是代码:
wxXmlResource::Get()->LoadFrame((wxFrame*)this, (wxWindow*)NULL , wxT("MyFrame1"));
wxPanel* container = (wxPanel*)FindWindowByName("m_panel1");
if (!container){
cout << "Error loading container!" << endl << flush;
}
else{
for (unsigned int i=0; i<3; i++){
auxPanelArray[i] = new wxPanel( container, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxXmlResource::Get()->LoadPanel( auxPanelArray[i] , wxT("MyPanel6"));
wxSizer* mySizer = auxPanelArray[i]->GetSizer();
if (wxIS_KIND_OF(mySizer, wxStaticBoxSizer)){
cout << "Your sizer is a wxStaticBoxSizer" << endl << flush;
((wxStaticBoxSizer*)mySizer)->GetStaticBox()->SetLabel("My new label");
}
container->GetSizer()->Add(auxPanelArray[i]);
}
}
在我的 XRC 中,sizer 类型是 wxStaticBoxSizer,所以 wxIS_KIND_OF 应该检测到它并进入 if 块。
为什么它不起作用?
更新 这是 XRC 文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1">
<object class="wxPanel" name="MyPanel6">
<style>wxTAB_TRAVERSAL</style>
<object class="wxStaticBoxSizer">
<minsize>100,100</minsize>
<orient>wxVERTICAL</orient>
<label>label</label>
<object class="sizeritem">
<option>1</option>
<flag>wxEXPAND|wxALL</flag>
<border>5</border>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxStaticText" name="m_staticText12">
<label>MyLabel</label>
<wrap>-1</wrap>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxTextCtrl" name="m_textCtrl4">
<value></value>
</object>
</object>
</object>
</object>
<object class="sizeritem">
<option>0</option>
<flag>wxALL</flag>
<border>5</border>
<object class="wxButton" name="m_button8">
<label>MyButton</label>
<default>0</default>
</object>
</object>
</object>
</object>
</resource>