我有一个笔记本,并添加两个面板。当我试图获得其中一个面板的可用区域时,它返回(20,20) - 我想这是它的尺寸,然后放入东西。我想在放入东西之前得到这个尺寸因为某些比例依赖在它上面,我宁愿不使用绝对值。
我没有设置实际尺寸,我只是用boxsizer调整尺寸并设置比例。我想得到分配给面板的区域的实际像素宽度(它不会占用整个程序窗口区域)。
我尝试在GetSize之前调用Layout,我尝试过GetVirtualSize和Get ClientSize以及任何其他可用的大小返回,仍然(20,20)或有时(10,40)。我试过获得父母大小,没有去。我得到祖父母大小,它显示正确,但这是整个程序窗口的大小。有没有办法获得面板的潜在可用区域?如果需要,我可以发布布局,但它很长。
答案 0 :(得分:1)
在初始布局和大小调整完成之前,听起来您正在尝试在创建窗口时执行此操作,因此一切仍然具有其初始大小。有一些替代方法可以解决这种情况。您可以延迟创建面板的内容,直到第一个尺寸事件。或者您可以设计您的分级器布局以适应任何(合理的)大小。或者,如果需要,您可以稍后调整/重做大小调整器布局。
或许最简单的方法是将假大小的事件发送给父级或顶级父级,这样他们就可以按照正常布局调整子窗口的大小,这将会级联到您的面板。这可能不适用于所有情况,但通常有一种窗口方法,SendSizeEvent
。