为什么当我从Windows快捷方式运行程序时,wxPerl不会绘制我的wxStaticBitmap?

我做了一个wxPerl应用程序,它只展示了一个只包含wxMenuBar,wxPanel,wxTextCtrl和wxStaticBitmap的简单框架。 开发和部署平台是Windows XP及更高版本。

图像被添加到像这样的forms:

my $logoData = Wx::Bitmap->new(App::Resource::Images::getLogoPath(), wxBITMAP_TYPE_BMP); my $logo = Wx::StaticBitmap->new($self, -1, $logoData); 

我没有显示图像的问题。 我用Inno Setup做了一个安装程序,在用户的桌面上添加一个图标。 如果应用程序开始使用该快捷方式,窗口不会绘制我的wxStaticBitmap。 只有当应用程序失去焦点并且其他窗口正在移动时,才会绘制我的wxStaticBitmap。

当从开始菜单启动应用程序时,快速启动,或者直接使用wxpar编译之后,或者使用perl interperter显示我的wxStaticBitmap的罚款。

我唯一发现的是在我的wxFrame上调用Refresh()Update() 。 创build这个wxFrame后,我调用Show(1)并在Refresh()Update() 。 但到目前为止,没有运气。

wxStaticBitmap是从wxWindow派生的,因此它有Update和UpdateWindowUI方法。 在创建它之后立即调用$ logo上的一个标志,会发生什么?

编辑 :我只是试了一下,更新*方法没有帮助。 但是,强制重绘的是在创建对象之后调用SetBitmap 。 以下是我所做的:

 my $bmp = Wx::Bitmap->new("./testcard.bmp", wxBITMAP_TYPE_BMP); my $logo = Wx::StaticBitmap->new($frame, wxID_ANY, $bmp); $logo->SetBitmap($bmp); 

$frame是一个Wx::Frame ,我只是把一个按钮放在一个sizer中,而上面的代码在它的事件处理函数回调中。