wxWidgets 中Notebook 刷新问题

      在使用NoteBook控件制作工具时,我需要将从wxScrolledWindow继承来的面板加到NoteBook控件中。在面板显示后,面板中的空间位置刷新不正确或者不显示(wxSlider最小值显示不正确、wxRadioBox不显示、等问题)。当再次拖动界面改变界面大小,界面控件变得正常。

 

      控件位置不正确应该是Layout的问题,于是想到让面板显示时候执行下Layout方法。让面板重载了Show方法,在该方法中调用

this->Layout();。但是当第一次打开该页面时刷新还是不正常,需要切换下页卡重新打开就显示正常了。于是想到可能wxScrolledWindow面板中的控件刷新需要在控件都显示出来以后再执行下Layout方法。于是就让该面板重载了Onpaint方法,在该方法中只调用一次Layout方法来刷新下控件的位置,以后Onpaint不在调用Layout方法。这样面板在第一次显示时,上面的空间位置都正确。

 

class TerrainEditorPanel : public wxScrolledWindow

{

........

void OnPaint    (wxPaintEvent &event);

private:

bool    m_firstlayout;

}

 

 

void TerrainEditorPanel::OnPaint(wxPaintEvent& event)
{
        if ( m_firstlayout )
        {
                m_firstlayout = false;
               Layout();
        }
        wxScrolledWindow::OnPaint(event);
}

 

前后对比如下.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值