From: FPerl <tar...@ho...> - 2011-03-27 13:44:06
|
Hi, I'm testing ListView Groups on my Windows 7 os.This code working perfect but text values displaying in Chinese charset. I writing value in latin char but this app displaying Unicode char.I not understand. Where is the wrong? Thank you. ( Perl v5.10 Win32::GUI v1.06 ). Image : http://old.nabble.com/file/p31250335/2c7119b6.png Installed language packs;English, Turkish use strict; use warnings; use Win32::GUI qw( WS_VISIBLE WS_CHILD ); sub LVS_REPORT() {0x0001}; sub LVM_FIRST() {4096}; sub LVM_ENABLEGROUPVIEW() {LVM_FIRST + 157}; sub LVM_INSERTCOLUMN() {LVM_FIRST + 27}; sub LVM_INSERTITEM() {LVM_FIRST + 7}; sub LVM_INSERTGROUP() {LVM_FIRST + 145}; sub LVIF_GROUPID() { 256 }; sub LVM_SETITEM() {LVM_FIRST + 76 }; sub LVGF_HEADER() {1}; sub LVGF_FOOTER() {2}; sub LVGF_GROUPID() {16}; sub LVGF_ALIGN() {8}; sub LVGF_STATE() {4}; sub LVGA_FOOTER_LEFT() {8}; sub LVGS_COLLAPSIBLE() {0x00000008}; my $Win = new Win32::GUI::Window( -width => 330, -height => 269, -name => "Win", -text => "listview group test", -onResize => \&win_size, ); my $datalistview = $Win->AddListView( -text => "", -name => "ListView_1", -checkboxes => 1, -style => WS_VISIBLE | WS_CHILD | LVS_REPORT , # LVS_REPORT for the report style ); #-------------------------------------------------------------------------------------------------------------------# # MSDN create and inset column api # msdn url : http://msdn.microsoft.com/en-us/library/bb774743(v=VS.85).aspx # UINT mask; # int fmt; # int cx; # LPTSTR pszText; # int cchTextMax; # int iSubItem; # int iImage; # int iOrder; # int cxMin; # int cxDefault; # int cxIdeal; # Inserting Column1 my $paskl = pack('IIIPIIIIIII', 1|23|8|4|2, # LVCF_FMT | LVCF_ORDER | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH 0, # LVCFMT_LEFT 110, # Column Width "Column1", # Column Text 1024, # Column Text buffer 0, # SubItem 0, # Image 0, # Order 0, # avaible in vista; not used 0, # avaible in vista; not used 0 # avaible in vista; not used );# "Column1",0,-0- this is index my $returnvalue1 = $datalistview->SendMessage(LVM_INSERTCOLUMN,0,$paskl); print "Column1 index = $returnvalue1\n"; # Inserting Column2 my $pask2 = pack('IIIPIIIIIII', 1|23|8|4|2, # LVCF_FMT | LVCF_ORDER | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH 0, # LVCFMT_LEFT 110, # Column Width "Column2", # Column Text 1024, # Column Text buffer 1, # SubItem 0, # Image 0, # Order 0, # avaible in vista; not used 0, # avaible in vista; not used 0 # avaible in vista; not used );# "Column1",0,-0- this is index my $returnvalue2 = $datalistview->SendMessage(LVM_INSERTCOLUMN,1,$pask2); print "Column2 index = $returnvalue2\n"; #-------------------------------------------------------------------------------------------------------------------# # Inserting items to ListView # typedef struct { # UINT mask; # int iItem; # int iSubItem; # UINT state; # UINT stateMask; # LPTSTR pszText; # int cchTextMax; # int iImage; # LPARAM lParam; # if (_WIN32_IE >= 0x0300) # int iIndent; # endif # if (_WIN32_WINNT >= 0x0501) # int iGroupId; # UINT cColumns; # UINT puColumns; # endif # if (_WIN32_WINNT >= 0x0600) # int piColFmt; # int iGroup; # endif # } LVITEM, *LPLVITEM; my $paskl3 = pack('IIIIIPIIIIIIIII', 1|16|512, # LVIF_TEXT | LVIF_INDENT | LVIF_COLUMNS 0, # item index 0, # subitem index 0, # state index 0, # statemask index "Item1", # item text 5, # item text buffer 0, # image 0, # param 0, # indent 0, # group id is 0 0, # ccolumns 0, # pucolumns 0, # group id is 0 0 # igroup ); my $institem1 = $datalistview->SendMessage(LVM_INSERTITEM,0,$paskl3); print "Item1 index = $institem1\n"; my $paskl4 = pack('IIIIIPIIIIIIIII', 1|16|512, # LVIF_TEXT | LVIF_INDENT | LVIF_COLUMNS 1, # item index 0, # subitem index 0, # state index 0, # statemask index "Item2", # item text 5, # item text buffer 0, # image 0, # param 0, # indent 1, # group id is 0 0, # ccolumns 0, # pucolumns 0, # group id is 0 0 # igroup ); my $institem2 = $datalistview->SendMessage(LVM_INSERTITEM,1,$paskl4); print "Item2 index = $institem2\n"; #-------------------------------------------------------------------------------------------------------------------# # Sending message to listview and enabling group # msdn url : http://msdn.microsoft.com/en-us/library/aa931484.aspx # (HWND) hWndControl, # (UINT) LVM_ENABLEGROUPVIEW, # (WPARAM) wParam, // = (WPARAM) (BOOL) fEnable; # (LPARAM) lParam // = (LPARAM) (LPARAM) lParam; $datalistview->SendMessage(LVM_ENABLEGROUPVIEW,1,0); #-------------------------------------------------------------------------------------------------------------------# #-------------------------------------------------------------------------------------------------------------------# # msdn url : http://msdn.microsoft.com/en-us/library/aa453426.aspx # creating listview group # UINT cbSize; # UINT mask; # LPWSTR pszHeader; # int cchHeader; # LPWSTR pszFooter; # int cchFooter; # int iGroupId; # UINT stateMask; # UINT state; # UINT uAlign; # if _WIN32_WINNT >= 0x0600 # LPWSTR pszSubtitle; # UINT cchSubtitle; # LPWSTR pszTask; # UINT cchTask; # LPWSTR pszDescriptionTop; # UINT cchDescriptionTop; # LPWSTR pszDescriptionBottom; # UINT cchDescriptionBottom; # int iTitleImage; # int iExtendedImage; # int iFirstItem; # UINT cItems; # LPWSTR pszSubsetTitle; # UINT cchSubsetTitle; my $pasklaav = pack('IIPIIIIIIIIIIIIIIIIIIIII', 1024, # cbSize LVGF_HEADER|LVGF_GROUPID|LVGF_ALIGN|LVGF_STATE, "test1", # adding group text pszHeader 256, # char size of text 0, # pszFooter 0, # cchFooter 0, # GroupId 0, # statemask LVGS_COLLAPSIBLE, # state LVGA_FOOTER_LEFT, # Aling 0, # pszSubtitle 0, # cchSubtitle 0, # pszTask 0, # cchTask 0, # pszDescriptionTop 0, # cchDescriptionTop 0, # pszDescriptionBottom 0, # cchDescriptionBottom 0, # iTitleImage 0, # iExtendedImage 0, # iFirstItem 0, # cItems 0, # pszSubsetTitle 0 # cchSubsetTitle ); # inserting the group to listview my $insetgroupv = $datalistview->SendMessage(LVM_INSERTGROUP,-1,$pasklaav); print "insgroup1 - $insetgroupv\n"; my $pasklaavt = pack('IIPIIIIIIIIIIIIIIIIIIIII', 1024, # cbSize LVGF_HEADER|LVGF_GROUPID|LVGF_ALIGN|LVGF_STATE, "test1", # adding group text pszHeader 256, # char size of text 0, # pszFooter 0, # cchFooter 1, # GroupId 0, # statemask LVGS_COLLAPSIBLE, # state LVGA_FOOTER_LEFT, # Aling 0, # pszSubtitle 0, # cchSubtitle 0, # pszTask 0, # cchTask 0, # pszDescriptionTop 0, # cchDescriptionTop 0, # pszDescriptionBottom 0, # cchDescriptionBottom 0, # iTitleImage 0, # iExtendedImage 0, # iFirstItem 0, # cItems 0, # pszSubsetTitle 0 # cchSubsetTitle ); # inserting the group to listview my $insetgroupvt = $datalistview->SendMessage(LVM_INSERTGROUP,-1,$pasklaavt); print "insgroup2 - $insetgroupvt\n"; #-------------------------------------------------------------------------------------------------------------------# # http://msdn.microsoft.com/en-us/library/aa453430(MSDN.10).aspx # Seting item with listview group # typedef struct _LVITEM { # UINT mask; # int iItem; # int iSubItem; # UINT state; # UINT stateMask; # LPTSTR pszText; # int cchTextMax; # int iImage; # LPARAM lParam; # if (_WIN32_IE >= 0x0300) # int iIndent; # endif # int iGroupId; # } LVITEM; my $pasklaaas = pack('IIIIIIIIIII', LVIF_GROUPID, # mask 0, # item index 0, # subitem 0, # state 0, # statemask 0, # pszText 0, # Text buffer 0, # image index 0, # lParam 0, # iIndent 0, # groupid ); my $insetgroupas = $datalistview->SendMessage(LVM_SETITEM,0,$pasklaaas); print "setgroup1 - $insetgroupas\n"; my $pasklaaast = pack('IIIIIIIIIII', LVIF_GROUPID, # mask 1, # item index 0, # subitem 0, # state 0, # statemask 0, # pszText 0, # Text buffer 0, # image index 0, # lParam 0, # iIndent 1, # groupid ); my $insetgroupast = $datalistview->SendMessage(LVM_SETITEM,0,$pasklaaast); print "setgroup2 - $insetgroupast\n"; #-------------------------------------------------------------------------------------------------------------------# $Win->Center(); $Win->Show(); Win32::GUI::Dialog(); sub win_size { my ($self) = @_; my ($width, $height) = ($self->GetClientRect())[2..3]; $self->ListView_1->Resize($width+1, $height+1) if exists $self->{ListView_1}; } Regards... -- View this message in context: http://old.nabble.com/Win32%3A%3AGUI-ListBox-Group---Why-display-text-values-in-Chinese-charset--tp31250335p31250335.html Sent from the perl-win32-gui-users mailing list archive at Nabble.com. |
From: Rob M. <ro...@th...> - 2011-03-28 08:06:32
|
Quickly guessing (I don't have an environment to test this at the moment): This code: my $paskl3 = pack('IIIIIPIIIIIIIII', 1|16|512, # LVIF_TEXT | LVIF_INDENT | LVIF_COLUMNS 0, # item index 0, # subitem index 0, # state index 0, # statemask index "Item1", # item text 5, # item text buffer 0, # image 0, # param 0, # indent 0, # group id is 0 0, # ccolumns 0, # pucolumns 0, # group id is 0 0 # igroup ); may not do what you think, as I don't think the pack() will increment the reference count of the "item1" string, and so I think it will immediately go out of scope after the pack command leaving the structure pointing to potentially random string data. Try this instead: my $item1 = "item1"; my $paskl3 = pack('IIIIIPIIIIIIIII', 1|16|512, # LVIF_TEXT | LVIF_INDENT | LVIF_COLUMNS 0, # item index 0, # subitem index 0, # state index 0, # statemask index $item1, # item text 5, # item text buffer 0, # image 0, # param 0, # indent 0, # group id is 0 0, # ccolumns 0, # pucolumns 0, # group id is 0 0 # igroup ); I think the listbox makes a copy of the text - so that should be sufficient. Let us know how you get on. Regards, Rob. On 27 March 2011 14:44, FPerl <tar...@ho...> wrote: > > Hi, > > I'm testing ListView Groups on my Windows 7 os.This code working perfect but > text values displaying in Chinese charset. > I writing value in latin char but this app displaying Unicode char.I not > understand. > Where is the wrong? Thank you. > ( Perl v5.10 Win32::GUI v1.06 ). > > Image : > http://old.nabble.com/file/p31250335/2c7119b6.png > > Installed language packs;English, Turkish > > use strict; > use warnings; > > use Win32::GUI qw( WS_VISIBLE WS_CHILD ); > > sub LVS_REPORT() {0x0001}; > sub LVM_FIRST() {4096}; > sub LVM_ENABLEGROUPVIEW() {LVM_FIRST + 157}; > sub LVM_INSERTCOLUMN() {LVM_FIRST + 27}; > sub LVM_INSERTITEM() {LVM_FIRST + 7}; > sub LVM_INSERTGROUP() {LVM_FIRST + 145}; > sub LVIF_GROUPID() { 256 }; > sub LVM_SETITEM() {LVM_FIRST + 76 }; > sub LVGF_HEADER() {1}; > sub LVGF_FOOTER() {2}; > sub LVGF_GROUPID() {16}; > sub LVGF_ALIGN() {8}; > sub LVGF_STATE() {4}; > sub LVGA_FOOTER_LEFT() {8}; > sub LVGS_COLLAPSIBLE() {0x00000008}; > > my $Win = new Win32::GUI::Window( > -width => 330, > -height => 269, > -name => "Win", > -text => "listview group test", > -onResize => \&win_size, > ); > > my $datalistview = $Win->AddListView( > -text => "", > -name => "ListView_1", > -checkboxes => 1, > -style => WS_VISIBLE | WS_CHILD | LVS_REPORT , # LVS_REPORT for the > report style > ); > #-------------------------------------------------------------------------------------------------------------------# > # MSDN create and inset column api > # msdn url : http://msdn.microsoft.com/en-us/library/bb774743(v=VS.85).aspx > # UINT mask; > # int fmt; > # int cx; > # LPTSTR pszText; > # int cchTextMax; > # int iSubItem; > # int iImage; > # int iOrder; > # int cxMin; > # int cxDefault; > # int cxIdeal; > # Inserting Column1 > my $paskl = pack('IIIPIIIIIII', > 1|23|8|4|2, # LVCF_FMT | LVCF_ORDER | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH > 0, # LVCFMT_LEFT > 110, # Column Width > "Column1", # Column Text > 1024, # Column Text buffer > 0, # SubItem > 0, # Image > 0, # Order > 0, # avaible in vista; not used > 0, # avaible in vista; not used > 0 # avaible in vista; not used > );# "Column1",0,-0- this is index > my $returnvalue1 = $datalistview->SendMessage(LVM_INSERTCOLUMN,0,$paskl); > print "Column1 index = $returnvalue1\n"; > > # Inserting Column2 > my $pask2 = pack('IIIPIIIIIII', > 1|23|8|4|2, # LVCF_FMT | LVCF_ORDER | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH > 0, # LVCFMT_LEFT > 110, # Column Width > "Column2", # Column Text > 1024, # Column Text buffer > 1, # SubItem > 0, # Image > 0, # Order > 0, # avaible in vista; not used > 0, # avaible in vista; not used > 0 # avaible in vista; not used > );# "Column1",0,-0- this is index > my $returnvalue2 = $datalistview->SendMessage(LVM_INSERTCOLUMN,1,$pask2); > print "Column2 index = $returnvalue2\n"; > #-------------------------------------------------------------------------------------------------------------------# > # Inserting items to ListView > # typedef struct { > # UINT mask; > # int iItem; > # int iSubItem; > # UINT state; > # UINT stateMask; > # LPTSTR pszText; > # int cchTextMax; > # int iImage; > # LPARAM lParam; > # if (_WIN32_IE >= 0x0300) > # int iIndent; > # endif > # if (_WIN32_WINNT >= 0x0501) > # int iGroupId; > # UINT cColumns; > # UINT puColumns; > # endif > # if (_WIN32_WINNT >= 0x0600) > # int piColFmt; > # int iGroup; > # endif > # } LVITEM, *LPLVITEM; > > my $paskl3 = pack('IIIIIPIIIIIIIII', > 1|16|512, # LVIF_TEXT | LVIF_INDENT | LVIF_COLUMNS > 0, # item index > 0, # subitem index > 0, # state index > 0, # statemask index > "Item1", # item text > 5, # item text buffer > 0, # image > 0, # param > 0, # indent > 0, # group id is 0 > 0, # ccolumns > 0, # pucolumns > 0, # group id is 0 > 0 # igroup > ); > my $institem1 = $datalistview->SendMessage(LVM_INSERTITEM,0,$paskl3); > print "Item1 index = $institem1\n"; > > my $paskl4 = pack('IIIIIPIIIIIIIII', > 1|16|512, # LVIF_TEXT | LVIF_INDENT | LVIF_COLUMNS > 1, # item index > 0, # subitem index > 0, # state index > 0, # statemask index > "Item2", # item text > 5, # item text buffer > 0, # image > 0, # param > 0, # indent > 1, # group id is 0 > 0, # ccolumns > 0, # pucolumns > 0, # group id is 0 > 0 # igroup > ); > my $institem2 = $datalistview->SendMessage(LVM_INSERTITEM,1,$paskl4); > print "Item2 index = $institem2\n"; > #-------------------------------------------------------------------------------------------------------------------# > # Sending message to listview and enabling group > # msdn url : http://msdn.microsoft.com/en-us/library/aa931484.aspx > # (HWND) hWndControl, > # (UINT) LVM_ENABLEGROUPVIEW, > # (WPARAM) wParam, // = (WPARAM) (BOOL) fEnable; > # (LPARAM) lParam // = (LPARAM) (LPARAM) lParam; > $datalistview->SendMessage(LVM_ENABLEGROUPVIEW,1,0); > #-------------------------------------------------------------------------------------------------------------------# > > #-------------------------------------------------------------------------------------------------------------------# > # msdn url : http://msdn.microsoft.com/en-us/library/aa453426.aspx > # creating listview group > # UINT cbSize; > # UINT mask; > # LPWSTR pszHeader; > # int cchHeader; > # LPWSTR pszFooter; > # int cchFooter; > # int iGroupId; > # UINT stateMask; > # UINT state; > # UINT uAlign; > # if _WIN32_WINNT >= 0x0600 > # LPWSTR pszSubtitle; > # UINT cchSubtitle; > # LPWSTR pszTask; > # UINT cchTask; > # LPWSTR pszDescriptionTop; > # UINT cchDescriptionTop; > # LPWSTR pszDescriptionBottom; > # UINT cchDescriptionBottom; > # int iTitleImage; > # int iExtendedImage; > # int iFirstItem; > # UINT cItems; > # LPWSTR pszSubsetTitle; > # UINT cchSubsetTitle; > my $pasklaav = pack('IIPIIIIIIIIIIIIIIIIIIIII', > 1024, # cbSize > LVGF_HEADER|LVGF_GROUPID|LVGF_ALIGN|LVGF_STATE, > "test1", # adding group text pszHeader > 256, # char size of text > 0, # pszFooter > 0, # cchFooter > 0, # GroupId > 0, # statemask > LVGS_COLLAPSIBLE, # state > LVGA_FOOTER_LEFT, # Aling > 0, # pszSubtitle > 0, # cchSubtitle > 0, # pszTask > 0, # cchTask > 0, # pszDescriptionTop > 0, # cchDescriptionTop > 0, # pszDescriptionBottom > 0, # cchDescriptionBottom > 0, # iTitleImage > 0, # iExtendedImage > 0, # iFirstItem > 0, # cItems > 0, # pszSubsetTitle > 0 # cchSubsetTitle > ); > # inserting the group to listview > my $insetgroupv = $datalistview->SendMessage(LVM_INSERTGROUP,-1,$pasklaav); > print "insgroup1 - $insetgroupv\n"; > > > my $pasklaavt = pack('IIPIIIIIIIIIIIIIIIIIIIII', > 1024, # cbSize > LVGF_HEADER|LVGF_GROUPID|LVGF_ALIGN|LVGF_STATE, > "test1", # adding group text pszHeader > 256, # char size of text > 0, # pszFooter > 0, # cchFooter > 1, # GroupId > 0, # statemask > LVGS_COLLAPSIBLE, # state > LVGA_FOOTER_LEFT, # Aling > 0, # pszSubtitle > 0, # cchSubtitle > 0, # pszTask > 0, # cchTask > 0, # pszDescriptionTop > 0, # cchDescriptionTop > 0, # pszDescriptionBottom > 0, # cchDescriptionBottom > 0, # iTitleImage > 0, # iExtendedImage > 0, # iFirstItem > 0, # cItems > 0, # pszSubsetTitle > 0 # cchSubsetTitle > ); > # inserting the group to listview > my $insetgroupvt = > $datalistview->SendMessage(LVM_INSERTGROUP,-1,$pasklaavt); > print "insgroup2 - $insetgroupvt\n"; > #-------------------------------------------------------------------------------------------------------------------# > # http://msdn.microsoft.com/en-us/library/aa453430(MSDN.10).aspx > # Seting item with listview group > # typedef struct _LVITEM { > # UINT mask; > # int iItem; > # int iSubItem; > # UINT state; > # UINT stateMask; > # LPTSTR pszText; > # int cchTextMax; > # int iImage; > # LPARAM lParam; > # if (_WIN32_IE >= 0x0300) > # int iIndent; > # endif > # int iGroupId; > # } LVITEM; > my $pasklaaas = pack('IIIIIIIIIII', > LVIF_GROUPID, # mask > 0, # item index > 0, # subitem > 0, # state > 0, # statemask > 0, # pszText > 0, # Text buffer > 0, # image index > 0, # lParam > 0, # iIndent > 0, # groupid > ); > my $insetgroupas = $datalistview->SendMessage(LVM_SETITEM,0,$pasklaaas); > print "setgroup1 - $insetgroupas\n"; > > my $pasklaaast = pack('IIIIIIIIIII', > LVIF_GROUPID, # mask > 1, # item index > 0, # subitem > 0, # state > 0, # statemask > 0, # pszText > 0, # Text buffer > 0, # image index > 0, # lParam > 0, # iIndent > 1, # groupid > ); > my $insetgroupast = $datalistview->SendMessage(LVM_SETITEM,0,$pasklaaast); > print "setgroup2 - $insetgroupast\n"; > > #-------------------------------------------------------------------------------------------------------------------# > $Win->Center(); > $Win->Show(); > Win32::GUI::Dialog(); > > sub win_size { > my ($self) = @_; > my ($width, $height) = ($self->GetClientRect())[2..3]; > $self->ListView_1->Resize($width+1, $height+1) if exists > $self->{ListView_1}; > } > > Regards... > -- > View this message in context: http://old.nabble.com/Win32%3A%3AGUI-ListBox-Group---Why-display-text-values-in-Chinese-charset--tp31250335p31250335.html > Sent from the perl-win32-gui-users mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > Enable your software for Intel(R) Active Management Technology to meet the > growing manageability and security demands of your customers. Businesses > are taking advantage of Intel(R) vPro (TM) technology - will your software > be a part of the solution? Download the Intel(R) Manageability Checker > today! http://p.sf.net/sfu/intel-dev2devmar > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > http://perl-win32-gui.sourceforge.net/ > |
From: Ken S. <kl...@ps...> - 2011-03-29 16:05:01
|
Hello, I have a problem in that I am trying to build a window inside a package. However, when I build a button inside the package, the bitmap does not display. For instance, I have this simple program: use strict; use warnings; use Win32::GUI(); use Win32::GUI::Constants qw(BS_BITMAP); my $mw = Win32::GUI::Window->new(-title => "TEST", -pos => [100,100], -size => [200,200], ); my $IMG1 = new Win32::GUI::Bitmap("D:/WIN32GUI/up.bmp") or die "$^E\n"; my $IMG2 = new Win32::GUI::Bitmap("D:/WIN32GUI/down.bmp") or die "$^E\n"; $mw->AddButton( -name => "Up_Arrow", -left => 5, -top => 40, -width => 25, -height => 25, -pushstyle => BS_BITMAP, -visible => 1, -onClick => sub {print "UP\n";}, ); $mw->Up_Arrow->SetImage($IMG1); $mw->AddButton( -name => "Down_Arrow", -left => 5, -top => 70, -width => 25, -height => 25, -pushstyle => BS_BITMAP, -visible => 1, -onClick => sub {print "DOWN\n";}, ); $mw->Down_Arrow->SetImage($IMG2); $mw->Show(); Win32::GUI::Dialog(); $mw->Hide(); exit(0); The arrow images show up on the buttons in this case. However, if I make a package as below (in a file called Testing.pm): package Testing; use strict; use warnings; use Win32::GUI(); use Win32::GUI::Constants qw(BS_BITMAP); sub new { my $proto = shift; my $buttonCB = shift; my $class = ref($proto) || $proto; my $self = {}; $self->{mw} = Win32::GUI::Window->new(-title => "TEST", -pos => [100,100], -size => [200,200], ); my $IMG1 = new Win32::GUI::Bitmap("D:/WIN32GUI/up.bmp") or die "$^E\n"; my $IMG2 = new Win32::GUI::Bitmap("D:/WIN32GUI/down.bmp") or die "$^E\n"; $self->{mw}->AddButton( -name => "Up_Arrow", -left => 5, -top => 40, -width => 25, -height => 25, -pushstyle => BS_BITMAP, -visible => 1, -onClick => sub {print "UP\n";}, ); $self->{mw}->Up_Arrow->SetImage($IMG1); $self->{mw}->AddButton( -name => "Down_Arrow", -left => 5, -top => 70, -width => 25, -height => 25, -pushstyle => BS_BITMAP, -visible => 1, -onClick => sub {print "DOWN\n";}, ); $self->{mw}->Down_Arrow->SetImage($IMG2); bless ($self, $class); return $self; } sub getMW { my $self = shift; return $self->{mw}; } 1 And use this package as follows: use strict; use warnings; use Win32::GUI(); use Testing; my $testing = Testing->new(); my $mw = $testing->getMW(); $mw->Show(); Win32::GUI::Dialog(); $mw->Hide(); exit(0); The buttons are blank. Does anybody have any idea why this happens? Or does it happen for others? Of course the image file names would have to be changed for testing. Thanks, Ken Slater |
From: Jeremy W. <jez...@ho...> - 2011-03-29 18:59:11
|
Quick reply, it could be a simple scoping problem: > package Testing; > > use strict; > use warnings; > use Win32::GUI(); > use Win32::GUI::Constants qw(BS_BITMAP); move the images here - that way the objects don't get destroyed when they go out of scope. my $IMG1 = new Win32::GUI::Bitmap("D:/WIN32GUI/up.bmp") or die "$^E\n"; my $IMG2 = new Win32::GUI::Bitmap("D:/WIN32GUI/down.bmp") or die "$^E\n"; > > > sub new { > my $proto = shift; > my $buttonCB = shift; > my $class = ref($proto) || $proto; > my $self = {}; > > $self->{mw} = Win32::GUI::Window->new(-title => "TEST", > -pos => [100,100], > -size => [200,200], > ); > > my $IMG1 = new Win32::GUI::Bitmap("D:/WIN32GUI/up.bmp") > or die "$^E\n"; > > my $IMG2 = new Win32::GUI::Bitmap("D:/WIN32GUI/down.bmp") > or die "$^E\n"; > > $self->{mw}->AddButton( > -name => "Up_Arrow", > -left => 5, > -top => 40, > -width => 25, > -height => 25, > -pushstyle => BS_BITMAP, > -visible => 1, > -onClick => sub {print "UP\n";}, > ); > > $self->{mw}->Up_Arrow->SetImage($IMG1); > > $self->{mw}->AddButton( > -name => "Down_Arrow", > -left => 5, > -top => 70, > -width => 25, > -height => 25, > -pushstyle => BS_BITMAP, > -visible => 1, > -onClick => sub {print "DOWN\n";}, > ); > > $self->{mw}->Down_Arrow->SetImage($IMG2); > > bless ($self, $class); > return $self; > } > > sub getMW > { > my $self = shift; > return $self->{mw}; > } > > 1 > > And use this package as follows: > > use strict; > use warnings; > use Win32::GUI(); > use Testing; > > > my $testing = Testing->new(); > my $mw = $testing->getMW(); > $mw->Show(); > Win32::GUI::Dialog(); > $mw->Hide(); > exit(0); > > The buttons are blank. Does anybody have any idea why this happens? > Or does it happen for others? > Of course the image file names would have to be changed for testing. > > Thanks, > Ken Slater > > > > > ------------------------------------------------------------------------------ > Enable your software for Intel(R) Active Management Technology to meet the > growing manageability and security demands of your customers. Businesses > are taking advantage of Intel(R) vPro (TM) technology - will your software > be a part of the solution? Download the Intel(R) Manageability Checker > today! http://p.sf.net/sfu/intel-dev2devmar > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > http://perl-win32-gui.sourceforge.net/ |
From: Ken S. <kl...@ps...> - 2011-03-30 11:07:53
|
Thanks Jeremy. Yes it was a simple problem, but I didn't see it. Ken From: Jeremy White [mailto:jez...@ho...] Sent: Tuesday, March 29, 2011 2:57 PM To: kl...@ps...; per...@li... Subject: RE: [perl-win32-gui-users] Button Bitmap inconsistency Quick reply, it could be a simple scoping problem: > package Testing; > > use strict; > use warnings; > use Win32::GUI(); > use Win32::GUI::Constants qw(BS_BITMAP); move the images here - that way the objects don't get destroyed when they go out of scope. my $IMG1 = new Win32::GUI::Bitmap("D:/WIN32GUI/up.bmp") or die "$^E\n"; my $IMG2 = new Win32::GUI::Bitmap("D:/WIN32GUI/down.bmp") or die "$^E\n"; > > > sub new { > my $proto = shift; > my $buttonCB = shift; > my $class = ref($proto) || $proto; > my $self = {}; > > $self->{mw} = Win32::GUI::Window->new(-title => "TEST", > -pos => [100,100], > -size => [200,200], > ); > > my $IMG1 = new Win32::GUI::Bitmap("D:/WIN32GUI/up.bmp") > or die "$^E\n"; > > my $IMG2 = new Win32::GUI::Bitmap("D:/WIN32GUI/down.bmp") > or die "$^E\n"; > > $self->{mw}->AddButton( > -name => "Up_Arrow", > -left => 5, > -top => 40, > -width => 25, > -height => 25, > -pushstyle => BS_BITMAP, > -visible => 1, > -onClick => sub {print "UP\n";}, > ); > > $self->{mw}->Up_Arrow->SetImage($IMG1); > > $self->{mw}->AddButton( > -name => "Down_Arrow", > -left => 5, > -top => 70, > -width => 25, > -height => 25, > -pushstyle => BS_BITMAP, > -visible => 1, > -onClick => sub {print "DOWN\n";}, > ); > > $self->{mw}->Down_Arrow->SetImage($IMG2); > > bless ($self, $class); > return $self; > } > > sub getMW > { > my $self = shift; > return $self->{mw}; > } > > 1 > > And use this package as follows: > > use strict; > use warnings; > use Win32::GUI(); > use Testing; > > > my $testing = Testing->new(); > my $mw = $testing->getMW(); > $mw->Show(); > Win32::GUI::Dialog(); > $mw->Hide(); > exit(0); > > The buttons are blank. Does anybody have any idea why this happens? > Or does it happen for others? > Of course the image file names would have to be changed for testing. > > Thanks, > Ken Slater > > > > > ---------------------------------------------------------------------------- -- > Enable your software for Intel(R) Active Management Technology to meet the > growing manageability and security demands of your customers. Businesses > are taking advantage of Intel(R) vPro (TM) technology - will your software > be a part of the solution? Download the Intel(R) Manageability Checker > today! http://p.sf.net/sfu/intel-dev2devmar > _______________________________________________ > Perl-Win32-GUI-Users mailing list > Per...@li... > https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > http://perl-win32-gui.sourceforge.net/ |