从旧式菜单中,我正在尝试切换到色带。我有一个wxMDIParentFrame,它有两个主要的孩子。这是我尝试切换到色带。
代码:
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
m_StatusBar = this->CreateStatusBar( 2, wxST_SIZEGRIP, wxID_ANY );
wxMenuBar* m_MenuBar = new wxMenuBar( 0 ); //looks nonsense but I am getting warning messages because MDIParentFrame automatically adds a window menu
this->SetMenuBar(m_MenuBar);
wxBoxSizer* bSizer1;
bSizer1 = new wxBoxSizer( wxVERTICAL );
m_ribbonBar = new wxRibbonBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxRIBBON_BAR_DEFAULT_STYLE );
m_ribbonBar->SetArtProvider(new wxRibbonDefaultArtProvider);
m_RibbonPage_Home = new wxRibbonPage( m_ribbonBar, wxID_ANY, wxT("Home") , wxBitmap( wxT("images/icons/open.bmp"), wxBITMAP_TYPE_ANY ) , 0 );
m_ribbonPanelHome = new wxRibbonPanel( m_RibbonPage_Home, wxID_ANY, wxT("Document") , wxNullBitmap , wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE );
m_ribbonButtonBarDocument = new wxRibbonButtonBar( m_ribbonPanelHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
m_ribbonButtonBarDocument->AddButton( wxID_ANY, wxT("Open"), wxBitmap( wxT("images/icons/open.bmp"), wxBITMAP_TYPE_ANY ), wxEmptyString);
m_ribbonPageTools = new wxRibbonPage( m_ribbonBar, wxID_ANY, wxT("Tools") , wxNullBitmap , 0 );
m_ribbonBar->SetActivePage( m_ribbonPageTools );
m_ribbonPanelProcessEngTools = new wxRibbonPanel( m_ribbonPageTools, wxID_ANY, wxT("Process Engineering Tools") , wxBitmap( wxT("images/icons/open.bmp"), wxBITMAP_TYPE_ANY ) , wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE );
m_ribbonButtonBar2 = new wxRibbonButtonBar( m_ribbonPanelProcessEngTools, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
m_ribbonButtonBar2->AddButton( wxID_ANY, wxT("Unit Convertor"), wxBitmap( wxT("images/icons/open.bmp"), wxBITMAP_TYPE_ANY ), wxEmptyString);
m_ribbonBar->Realize();
// Connect Events
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( myFrame::mainFrameOnClose ) );
this->Connect( wxEVT_ICONIZE, wxIconizeEventHandler( myFrame::mainFrameOnIconize ) );
this->Connect( wxEVT_IDLE, wxIdleEventHandler( myFrame::mainFrameOnIdle ) );
this->Connect( wxID_ANY, wxEVT_COMMAND_RIBBONBAR_HELP_CLICKED, wxRibbonBarEventHandler( myFrame::OnRibbonBarHelpClick ) );
this->Connect( wxID_ANY, wxEVT_COMMAND_RIBBONBAR_TAB_RIGHT_UP, wxRibbonBarEventHandler( myFrame::OnRibbonBarTabRightUp ) );
this->Connect( wxID_ANY, wxEVT_COMMAND_RIBBONBAR_TOGGLED, wxRibbonBarEventHandler( myFrame::OnRibbonBarToggled ) );
this->Connect( wxID_ANY, wxEVT_COMMAND_RIBBONBUTTON_CLICKED, wxRibbonButtonBarEventHandler( myFrame::OpenOnRibbonButtonClicked ) );
this->Connect( wxID_ANY, wxEVT_COMMAND_RIBBONBUTTON_CLICKED, wxRibbonButtonBarEventHandler( myFrame::UCOnRibbonButtonClicked ) );
#if wxUSE_STATUSBAR
m_StatusBar->SetStatusText(_("Welcome..."), 0);
m_StatusBar->SetStatusText(_(""), 1);
#endif
m_frmCmdWindow=new frmCommandWindow(this); //wxMDIChildFrame
//m_frmCmdWindow->Show(true);
m_frmICell=CreateFrmICell(this); //wxMDIChildFrame
//m_frmICell->Show(true);
int height=0, width=0;
wxDisplaySize(&width,&height);
this->SetSize(width,height);
this->Tile();
bSizer1->Add( m_ribbonBar, 0, wxALL|wxEXPAND, 5 );
this->SetSizer( bSizer1 );
this->Centre( wxBOTH );
色带的外观看起来很正常,但以下是问题: 1)我无法与功能区上的任何按钮进行交互 2)它不刷新(不重绘)。
*功能区就在那里,好像有一张照片被绘制,当我显示任何子帧时,功能区消失了。
3)wxMDIParentFrame有一个自动窗口菜单附加到菜单栏以管理其子窗口。如何禁用此窗口菜单以便我可以删除菜单栏。
顺便说一句,我使用的是Windows 10,gcc 4.6.2和wxWidgets 3.0.2。
我可能做错了什么?
提前感谢你!
答案 0 :(得分:0)
此解决方案适用于我:
void MainFrame::CreateControls()
{
////@begin MainFrame content construction
// Generated by DialogBlocks, 18/10/2015 12:17:49 (unregistered)
MainFrame* itemMDIParentFrame1 = this;
wxStatusBar* itemStatusBar2 = new wxStatusBar( itemMDIParentFrame1, ID_STATUSBAR, wxST_SIZEGRIP|wxNO_BORDER );
itemStatusBar2->SetFieldsCount(2);
itemMDIParentFrame1->SetStatusBar(itemStatusBar2);
////@end MainFrame content construction
wxBitmap tmp(16, 16);
m_RibbonBar = new wxRibbonBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxRIBBON_BAR_DEFAULT_STYLE);
m_RibbonBar->SetArtProvider(new wxRibbonDefaultArtProvider);
auto m_RibbonPage_Home = new wxRibbonPage(m_RibbonBar, wxID_ANY, wxT("Home"), wxNullBitmap, 0);
auto m_ribbonPageTools = new wxRibbonPage(m_RibbonBar, wxID_ANY, wxT("Tools"), wxNullBitmap, 0);
auto m_ribbonPanelHome = new wxRibbonPanel(m_RibbonPage_Home, wxID_ANY, wxT("Document"), wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE);
auto m_ribbonPanelProcessEngTools = new wxRibbonPanel(m_ribbonPageTools, wxID_ANY, wxT("Process Engineering Tools"), wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE);
auto m_ribbonButtonBar2 = new wxRibbonButtonBar(m_ribbonPanelProcessEngTools, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0);
auto m_ribbonButtonBarDocument = new wxRibbonButtonBar(m_ribbonPanelHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0);
m_ribbonButtonBarDocument->AddButton(wxID_NEW, wxT("Open"), tmp, wxEmptyString);
m_RibbonBar->SetActivePage(m_ribbonPageTools);
m_ribbonButtonBar2->AddButton(wxID_OPEN, wxT("Unit Convertor"), tmp, wxEmptyString);
auto clientWindow = GetClientWindow();
wxBoxSizer * sizer = new wxBoxSizer(wxVERTICAL);
SetSizer(sizer);
sizer->Add(m_RibbonBar, 0, wxGROW);
sizer->Add(clientWindow, 1, wxEXPAND);
m_RibbonBar->Realize();
}