c++ - wxWidgets painting wxGLCanvas on a wxPanel -


i trying draw wxglcanvas in panel , fill area of panel result shown in image below. had opengl cube sample running fine in example, wxglcanvas parented wxframe. when try parent wxpanel, fraction of panel displaying wxglcanvas.

enter image description here

the red box should fill panel in image. here constructor window creates of stuff in image.

wxbegin_event_table(mainwindow, wxframe) evt_menu(wxid_new, mainwindow::onnewwindow) evt_menu(wxid_close, mainwindow::onclose) wxend_event_table()  mainwindow::mainwindow() : wxframe(null, wxid_any, wxt("opengl project test"), wxdefaultposition,wxdefaultsize) {     this->setsizehints( wxdefaultsize, wxdefaultsize );      m_statusbar1 = this->createstatusbar( 1, wxst_sizegrip, wxid_any );     m_menubar1 = new wxmenubar( 0 );     m_menu1 = new wxmenu();     m_menubar1->append( m_menu1, wxt("mymenu") );       m_menu2 = new wxmenu();     m_menubar1->append( m_menu2, wxt("mymenu") );       m_menu3 = new wxmenu();     m_menubar1->append( m_menu3, wxt("mymenu") );       m_menu4 = new wxmenu();     m_menubar1->append( m_menu4, wxt("mymenu") );       this->setmenubar( m_menubar1 );      m_toolbar4 = this->createtoolbar( wxtb_horizontal, wxid_any );      m_tool1 = m_toolbar4->addtool( wxid_any, wxt("tool"), wxnullbitmap, wxnullbitmap,   wxitem_normal,  wxemptystring, wxemptystring, null );       m_toolbar4->realize();       wxboxsizer* bsizer1;     bsizer1 = new wxboxsizer( wxhorizontal );      // ######### here try set panel parent of myglcanvas ##########     m_panel2 = new wxpanel( this, wxid_any, wxdefaultposition, wxdefaultsize,          wxfull_repaint_on_resize );     bsizer1->add( m_panel2, 1, wxexpand | wxall, 5 );     myglcanvas * glcanvas = new myglcanvas(m_panel2);       m_ribbonbar2 = new wxribbonbar( this, wxid_any, wxdefaultposition, wxdefaultsize, wxribbon_bar_flow_vertical );     m_ribbonbar2->setartprovider(new wxribbondefaultartprovider);      m_ribbonpage8 = new wxribbonpage( m_ribbonbar2, wxid_any, wxt("myribbonpage") , wxnullbitmap , 0 );     m_ribbonpage8->setminsize( wxsize( 400,400 ) );      m_ribbonpanel16 = new wxribbonpanel( m_ribbonpage8, wxid_any, wxt("myribbonpanel") ,wxbitmap() , wxdefaultposition, wxdefaultsize, wxribbon_panel_default_style );     m_ribbonbuttonbar7 = new wxribbonbuttonbar( m_ribbonpanel16, wxid_any, wxdefaultposition, wxdefaultsize, 0 );     m_ribbonbuttonbar7->addbutton( wxid_any, wxt("myribbonbutton"), wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbonbuttonbar7->addbutton( wxid_any, wxt("myribbonbutton"), wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbonbuttonbar7->addbutton( wxid_any, wxt("myribbonbutton"), wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbonbuttonbar7->addbutton( wxid_any, wxt("myribbonbutton"), wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbonbuttonbar7->addbutton( wxid_any, wxt("myribbonbutton"), wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbonbuttonbar7->addbutton( wxid_any, wxt("myribbonbutton"), wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbonpanel17 = new wxribbonpanel( m_ribbonpage8, wxid_any, wxt("myribbonpanel") , wxnullbitmap , wxdefaultposition, wxdefaultsize, wxribbon_panel_default_style );     m_ribbontoolbar2 = new wxribbontoolbar( m_ribbonpanel17, wxid_any, wxdefaultposition, wxdefaultsize, 0 );     m_ribbontoolbar2->addtool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbontoolbar2->addtool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbontoolbar2->addtool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbontoolbar2->addtool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbontoolbar2->addtool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbontoolbar2->addtool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbontoolbar2->addtool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbonpanel18 = new wxribbonpanel( m_ribbonpage8, wxid_any, wxt("myribbonpanel") , wxnullbitmap , wxdefaultposition, wxdefaultsize, wxribbon_panel_default_style );     m_ribbontoolbar3 = new wxribbontoolbar( m_ribbonpanel18, wxid_any, wxdefaultposition, wxdefaultsize, 0 );     m_ribbontoolbar3->adddropdowntool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbontoolbar3->addhybridtool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbontoolbar3->addhybridtool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbontoolbar3->addhybridtool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbontoolbar3->adddropdowntool( wxid_any, wxartprovider::getbitmap(wxart_question, wxart_other, wxsize(32, 32)), wxemptystring);     m_ribbonbar2->realize();      bsizer1->add( m_ribbonbar2, 0, wxall, 5 );       this->setsizer( bsizer1 );     this->layout();      this->centre( wxboth );      show(); 

}

this bit thats puzzling me

m_panel2 = new wxpanel( this, wxid_any, wxdefaultposition, wxdefaultsize, wxfull_repaint_on_resize ); bsizer1->add( m_panel2, 1, wxexpand | wxall, 5 ); myglcanvas * glcanvas = new myglcanvas(m_panel2); 

you never specify how should glcanvas laid out -- isn't. simplest solution use sizer panel , add canvas sizer proportion 1 , expand flag.


Comments