我在 Microsoft Windows 7 系统上使用为 MSWin32-x86-multi-thread 和 win32::GUI 构建的 Strawberry Perl (v5.16.3)。我正在使用 Eclipse/EPIC 编写和测试代码。
我正在尝试显示图片/位图/图标/光标。已经尝试了所有 3,结果相同,从 win32::gui::LoadImage 没有返回任何内容。
我在 gui.PM 中添加了一些打印行进行调试,并且我有一个测试脚本来测试这个 gui 函数。由于 win32::gui::LoadImage 子例程的代码不在 GUI.PM 模块中,它是从 C 库还是 Windows 中包含的?调用 win32::gui::LoadImage 的代码是否需要更改?
提前感谢鲍勃的帮助
## print lines added to gui.PM for debugging ##########
## (Lines are Suffixed with comment #Bob) #############
package Win32::GUI::Bitmap;
@ISA = qw(Win32::GUI);
end;
sub new {
my $class = shift;
my $self = {};
my $inputa =shift @_; #Bob
print "Len=" . length($inputa)."\n"; #Bob
# my $handle = Win32::GUI::LoadImage(@_); #Bob commented out the origional
my $handle = Win32::GUI::LoadImage($inputa, 0, 0, 0, 0); #Bob
print "Gui.PM(Win32::GUI::_new) self='$self' input='@_' inputa='$inputa' \n ";# Bob
print "Gui.PM handle=".$handle." ".$self."\n"; #Bob
# TODO: this gives us a bitmap object, even if we ask for a cursor!
#### test script ####################################################
use Win32::GUI();
our $Window = Win32::GUI::Window->new(
-name => "Window",
-top => 120,
-left => 120,
-height => 300,
-width => 300
);
our $Icon="";
$Icon = Win32::GUI::Bitmap->new("eclipse16.gif") ;#or die $^E;
print "Test Icon=".$Icon."\n"; # See if Bitmap return anything
our $Button = $Window -> AddButton(
-name => "Icon",
-text => "Icon",
-top => 50,
-left => 50,
-height => 100,
-width => 100,
-picture => $Icon,
-icon => $Icon,
-bitmap => $Icon, # add this line here, try if works
);
# $Window->$Button-> $Bitmap ;
$Window->SetIcon($Icon);
$Window->Show();
Win32::GUI::Dialog();
sub Window_Terminate {
return -1;
}