【发布时间】:2011-01-07 18:40:12
【问题描述】:
我制作了一个 wxPerl 应用程序,它只显示了一个简单的框架,它只包含一个 wxMenuBar、wxPanel、wxTextCtrl 和一个 wxStaticBitmap。开发和部署平台是 Windows XP 及更高版本。
图像是这样添加到表单中的:
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 解释器显示我的 wxStaticBitmap 很好。
我唯一发现的是在我的 wxFrame 上调用 Refresh() 和 Update()。创建这个 wxFrame 之后,我调用 Show(1),然后调用 Refresh() 和 Update()。但到目前为止还没有运气。
【问题讨论】:
-
快捷方式附加的工作目录是什么? getLogoPath() 是绝对的还是相对的?
-
getLogoPath() 实际上创建一个临时文件并且是绝对的。我为此使用 File::Temp 。加载图像似乎没有问题。因为一旦有什么东西触发了框架被重绘,一切都很好。
-
另外,我应该补充一点,位图是在我的 Wx::Frame 派生类的构造函数中创建的。就像面板、文本控件等一样。
标签: windows perl wxwidgets wxperl