如何在不将其放置在其父对象上的情况下创建它?
这是一个最小的例子。
package MyApp;
use strict;
use warnings;
use Wx;
use base 'Wx::App';
sub OnInit {
my ($self) = @_;
my $frame
= Wx::Frame->new( undef, -1, 'Test', [ -1, -1 ], [ 250, 150 ], );
my $sizer = Wx::GridBagSizer->new( 0, 0 );
my $btn1 = Wx::Button->new( $frame, -1, '1' );
my $btn2 = Wx::Button->new( $frame, -1, '2' );
$sizer->Add( $btn1, Wx::GBPosition->new( 2, 2 ) );
$frame->SetSizer($sizer);
$frame->Show(1);
1;
}
package main;
MyApp->new->MainLoop;
此产量
我只希望显示尺寸调整器(按钮1)中的内容。
默认创建所有非顶级窗口。如果您不希望它们出现在屏幕上,则需要隐藏它们。最好的方法是将它们隐藏在[[before中,以实际创建真实的窗口,这可以在C ++中实现,方法是创建窗口而不给它任何参数,然后使用通常使用的相同参数调用Create()
创建它时。
my $btn2 = Wx::Button->new();
$btn2->Hide(); # or $btn2->Show(false)
$btn2->Create($frame, -1, '2' );
应该工作;如果没有,您仍然可以隐藏它,并且如果在显示框架之前进行了操作,则用户仍然看不到它。