我的框架顶部有一些东西,下面有一个wxScrolledWindow。滚动窗口包含用户选择的图像。我希望框架收缩包装,以便背景永远不会显示在滚动窗口中。我在框架中使用BoxSizer。一切都很完美,直到用户拖动边框以增加观看区域。他把它放得太远,背景显示。我已经尝试过至少十几种方法,但是当用户拖动边框超出滚动条消失的位置时,我无法将窗口的边框弹回。加载图像时,滚动窗口使用正确的数字调用SetMaxClientSize(),但它没有任何效果。一些照片会有所帮助。我刚刚向右拖动右边框,增加了查看区域。这是它的样子:
我希望边框能够快速恢复,所以它看起来像这样:
Windows 7 x64,wxWidgets 2.9.4
答案 0 :(得分:1)
重新实现size事件处理程序。如果新尺寸大于您想要的尺寸,请将其修改为您接受的最大尺寸。然后调用基础实现。
void MyFrame::OnSize(wxSizeEvent& event)
{
wxSize new_size = event.GetSize()
wxSize max_size = ... calculate max size ....
if ( new_size.GetHeight() > max_size.GetHeight() {
new_size.SetHeight( max_size.GetHeight() );
if ( new_size.GetWidth() > max_size.GetWidth() {
new_size.SetWidth( max_size.GetWidth() );
event.SetSize( new_size );
wxFrame::OnSize( event );
另外,请注意文档中的这个注释:
重要提示:Sizer(请参阅Sizers概述)依赖于大小事件 功能正常。因此,在基于sizer的布局中,不要忘记 在你捕获的所有大小事件上调用Skip(并且不捕获大小事件 当你不需要的时候。)
答案 1 :(得分:0)