You can subscribe to this list here.
2001 |
Jan
(226) |
Feb
(139) |
Mar
(156) |
Apr
(95) |
May
(181) |
Jun
(166) |
Jul
(80) |
Aug
(59) |
Sep
(69) |
Oct
(83) |
Nov
(142) |
Dec
(33) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(42) |
Feb
(91) |
Mar
(76) |
Apr
(113) |
May
(67) |
Jun
(68) |
Jul
(37) |
Aug
(41) |
Sep
(16) |
Oct
(135) |
Nov
(51) |
Dec
(21) |
2003 |
Jan
(37) |
Feb
(36) |
Mar
(37) |
Apr
(103) |
May
(68) |
Jun
(70) |
Jul
(77) |
Aug
(12) |
Sep
(9) |
Oct
(53) |
Nov
(88) |
Dec
(63) |
2004 |
Jan
(263) |
Feb
(106) |
Mar
(36) |
Apr
(21) |
May
(21) |
Jun
(34) |
Jul
(33) |
Aug
(34) |
Sep
(35) |
Oct
(21) |
Nov
(43) |
Dec
(63) |
2005 |
Jan
(28) |
Feb
(42) |
Mar
(29) |
Apr
(14) |
May
(41) |
Jun
(20) |
Jul
(65) |
Aug
(136) |
Sep
(41) |
Oct
(74) |
Nov
(34) |
Dec
(94) |
2006 |
Jan
(85) |
Feb
(94) |
Mar
(68) |
Apr
(103) |
May
(66) |
Jun
(51) |
Jul
(24) |
Aug
(56) |
Sep
(57) |
Oct
(85) |
Nov
(73) |
Dec
(68) |
2007 |
Jan
(59) |
Feb
(32) |
Mar
(13) |
Apr
(32) |
May
(36) |
Jun
(36) |
Jul
(64) |
Aug
(35) |
Sep
(19) |
Oct
(10) |
Nov
(13) |
Dec
(20) |
2008 |
Jan
(26) |
Feb
(41) |
Mar
(19) |
Apr
(24) |
May
(16) |
Jun
(33) |
Jul
(34) |
Aug
(4) |
Sep
(11) |
Oct
|
Nov
(26) |
Dec
(23) |
2009 |
Jan
(5) |
Feb
(2) |
Mar
(21) |
Apr
(16) |
May
(13) |
Jun
(6) |
Jul
(34) |
Aug
(2) |
Sep
(1) |
Oct
(7) |
Nov
(5) |
Dec
(24) |
2010 |
Jan
(3) |
Feb
(5) |
Mar
(6) |
Apr
(6) |
May
(14) |
Jun
(6) |
Jul
(1) |
Aug
(12) |
Sep
(10) |
Oct
(9) |
Nov
|
Dec
(2) |
2011 |
Jan
(4) |
Feb
(5) |
Mar
(30) |
Apr
(1) |
May
(2) |
Jun
(5) |
Jul
(3) |
Aug
(2) |
Sep
(3) |
Oct
|
Nov
(6) |
Dec
|
2012 |
Jan
|
Feb
(10) |
Mar
|
Apr
|
May
(1) |
Jun
(3) |
Jul
(1) |
Aug
|
Sep
(2) |
Oct
|
Nov
(2) |
Dec
(4) |
2013 |
Jan
(5) |
Feb
(3) |
Mar
|
Apr
(3) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
(2) |
Feb
|
Mar
|
Apr
(1) |
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(9) |
Nov
(7) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(5) |
Dec
|
2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
From: yhsh327 <yh...@16...> - 2011-08-08 06:05:26
|
Hi, I am trying to use win32 gui in perl 5.12 version, so I need build source on perl 5.12, but I met some problems when doing "nmake", I want to know whether you still support this or not? please could you reply this email if you can do this help? I will provide more details information after I got your reply. thanks. Hongsheng |
From: eros o. <ero...@ho...> - 2011-07-23 08:37:23
|
Hi here is a plot to draw a time consuming drawing, i have used as a template the article in this forum "Drawing (Part 2) [Was: Refreshing the Window] , 04 Jun 2007 : http://www.mail-archive.com/per...@li.../msg05195.html it display a fractal plot like this: http://postimage.org/image/8qo2j9s4/ the display begins when you clock RUN button. and it is displayed after 25 seconds on my computer. after that the plot will not be erased if covered by other windows. in visual basic v6.0 there is a form property called AutoRedraw , if set to false the plot will be erased easily and if set to true the plot will persist. if possible i suggest a new feature for a future win32gui ; a new keyword AutoRedraw so if set to true the form will be refreshed without the user to write all that very complex API code as in the example. ie that complex code will be hidden from the user. regards eros if the listing of the code are not correct then download the file draw.pl from here: http://www.mediafire.com/?eq62cwd8wq460rc use Win32::GUI; use warnings; use strict; use Win32::GUI qw( CW_USEDEFAULT RDW_VALIDATE RDW_NOCHILDREN COLOR_3DFACE ); # The size of the memory DC we will create to draw into my ($WIDTH, $HEIGHT) = (640, 480); my $mw = Win32::GUI::Window->new( -title => 'Draw ', -left => CW_USEDEFAULT, -size => [ 640, 480 ], -onPaint => \&paint, ); $mw->AddButton( -name => "Button1", -text => "RUN ", -pos => [ 0, 0 ], -onClick => \&click, ); $mw->AddButton( -name => "Button2", -text => "CLS ", -pos => [ 0, 30 ], ); # Create a memory DC to act as a buffer into which we'll # do our drawing; then in the paint handler we'll just bitblt() # from the memory DC to the screen. my $memDC; my $mem_bitmap; { my $dc = $mw->GetDC(); $memDC = $dc->CreateCompatibleDC(); $mem_bitmap = $dc->CreateCompatibleBitmap($WIDTH, $HEIGHT); } my $memDC_orig_state = $memDC->Save(); $memDC->SelectObject($mem_bitmap); # Draw into the memory DC FormLoadColor($memDC); # to paint the windows with green color $mw->Show(); Win32::GUI::Dialog(); # Tidy up $memDC->Restore($memDC_orig_state); Win32::GUI::DC::DeleteObject($mem_bitmap); Win32::GUI::DC::DeleteDC($memDC); exit(0); sub paint { my ($self, $dc) = @_; my $saved = $dc->Save(); { my($l, $t, $r, $b) = $dc->GetUpdateRect(1); if(defined $l) { my $clip_rgn = Win32::GUI::Region->CreateRectRgn($l, $t, $r, $b); $dc->SelectClipRgn($clip_rgn); } # Validate the whole window $self->Redraw(RDW_VALIDATE | RDW_NOCHILDREN); } $dc->BitBlt(0,0,$WIDTH,$HEIGHT, $memDC, 0,0); $dc->Restore(); return 1; } sub click { my ($self) = @_; MyDraw($memDC); $self->GetParent->InvalidateRect(1); return 1; } sub MyDraw { my ($dc) = @_; my $x=0; my $y=0; my $r=0; # background color $dc->FillRect( 0,0,$WIDTH,$HEIGHT, Win32::GUI::Brush->new( [(210,251,125)]) ); #color of background # Do our drawing my $pointsize = "1"; #size of the plot point my $pi = 3.1415926; my $axrng = 10.0; for($x=-$axrng; $x <= $axrng; $x += 0.03) { for($y=-$axrng; $y <= $axrng; $y += 0.03) { $r = cos($x) + sin($y); my $P = new Win32::GUI::Pen( -color => [ (cos($y*$r)*255, cos($x*$y*$r)*255, sin($r*$x)*255)], #color of the Plot -width => 1, ); my $oldP = $dc->SelectObject($P); my $x1 = $x*20 + 250; my $y1 = $y*30 + 250; $dc->Circle($x1, $y1,$pointsize); } #Win32::GUI::DoEvents(); } return; } sub FormLoadColor { my ($dc) = @_; # Erase the background - COLOR_3DFACE is the window # background color $dc->FillRect( 0,0,$WIDTH,$HEIGHT, Win32::GUI::Brush->new( [(210,251,125)]) ); } sub Button2_Click { my $dc = $mw->GetDC; # Erase the background - COLOR_3DFACE is the window # background color $dc->FillRect( 0,50,$WIDTH,$HEIGHT, Win32::GUI::Brush->new( -system => COLOR_3DFACE ) ); } __END__ |
From: Aldo C. <da...@pe...> - 2011-07-16 15:21:00
|
On 31.08.2010 01:12, Hulley, Rob (APJ GCC Storage TPM) wrote: > Hi Everyone, > > I am using “Win32::GUI::BrowseForFolder” . > > I cannot work out how to add the “create new” option as seen on other > “browse for folder” windows. > > Is this feature available? hi, I just added two options to the BrowseForFolder function: -newui => 0/1 (default 0) use the "new" user interface (which has a "New folder" button) -nonewfolder => 0/1 (default 0) hides the "New folder" button (only meaningful with -newui => 1) those will be available with the next release of Win32::GUI. or if you don't want to wait, you can checkout the cvs and build Win32::GUI yourself :-) cheers, Aldo |
From: Aldo C. <da...@pe...> - 2011-07-16 15:08:22
|
On 24.03.2011 10:36, Jeremy White wrote: > Hi, > > Cool - do some major testing with your app, and if things are still OK, > the fix (well, a version of it) will get committed to CVS. I committed the changes to fix the -background option GDI object leak. I also added a -backgroundbrush option, which can be used instead of -background if you are creating a huge number of windows with the same background. eg. instead of: $window->AddLabel( -background => 0xff00ff, ... ); you can do this: use Win32::GUI::Constants; my $brush = Win32::GUI::Brush->new( -style => BS_SOLID, -color => 0xff00ff, ); $window->AddLabel( -backgroundbrush => $brush, ... ); this way you can effectively use the same $brush for several windows and avoid creating too much GDI objects. (of course you have to take care that $brush remains in scope, otherwise you may get errors or funny looking windows). the changes will be available with the next release of Win32::GUI. cheers, Aldo |
From: Jan D. <ja...@ac...> - 2011-06-16 16:46:02
|
How is it “not working”? Does it return the wrong information, or throw an error, or what is it that makes you think it is not working? Cheers, -Jan From: Vijay Maurya [mailto:vij...@gm...] Sent: Thursday, June 16, 2011 5:39 AM To: Per...@li...; per...@li... Subject: [perl-win32-gui-users] How to get the OS version Hi All, I want to know the version of my OS so that I can differentiate between 32 bit and 64 bit.I have used Win32::GetOSDisplayName() but its not working.Please help me on Priority basis....... Thanks in advance. |
From: Cruickshanks, D. <da...@es...> - 2011-06-16 13:38:43
|
Hi, Check out the environment variable $ENV{PROCESSOR_ARCHITECTURE} I think it's x86 for 32 bit and AMD64 for 64 bit. Thanks, Darin -------------------------------------------- Darin Cruickshanks Lab Support Manager, Computing Service University of Essex 01206 873585 From: Vijay Maurya [mailto:vij...@gm...] Sent: 16 June 2011 13:39 To: Per...@li...; per...@li... Subject: [perl-win32-gui-users] How to get the OS version Hi All, I want to know the version of my OS so that I can differentiate between 32 bit and 64 bit.I have used Win32::GetOSDisplayName() but its not working.Please help me on Priority basis....... Thanks in advance. |
From: Vijay M. <vij...@gm...> - 2011-06-16 12:38:54
|
Hi All, I want to know the version of my OS so that I can differentiate between 32 bit and 64 bit.I have used Win32::GetOSDisplayName() but its not working.Please help me on Priority basis....... Thanks in advance. |
From: Hulley, R. (A. G. S. TPM) <Rob...@hp...> - 2011-06-07 03:47:10
|
Hi Vijay, You could try using the Open Office odt format. This is recognised by the newer Word versions. I have not used this module but it may help. http://search.cpan.org/dist/OpenOffice-OODoc/OODoc.pod Regards Rob From: Vijay Maurya [mailto:vij...@gm...] Sent: Monday, 6 June 2011 11:25 PM To: per...@li... Subject: Re: [perl-win32-gui-users] Can't call method "STORE" on an undefined value during global destruction Hi All, I Want to do the formatting of Doc or RTF format using perl.Didn't get anything from google.Please help me on Priority Basis. Formatting Include[Bolding of the letters,changing of the font,changing of the color of words] Thanks in advance. |
From: Vijay M. <vij...@gm...> - 2011-06-06 13:25:19
|
Hi All, I Want to do the formatting of Doc or RTF format using perl.Didn't get anything from google.Please help me on Priority Basis. Formatting Include[Bolding of the letters,changing of the font,changing of the color of words] Thanks in advance. |
From: Jeremy W. <jez...@ho...> - 2011-05-20 20:22:41
|
> When some of my Win32::GUI programs exit, I get the above error > message. Trapping the error (via %SIG) gives no useful information, > as caller() reports that the error occurred at "main.pl, line 0". > > Searching the web, I found a tantalizing almost-solution in this thread: > http://old.nabble.com/Crash-with-perl-5.10-and-Win32%3A%3AGUI-1.6-td16523383.html > [ http://goo.gl/UhcgE ] > > In this thread, one Jeremy White discovers the problem, apparently > solves it, then writes: > > > I think the solution is straightforward but don't want to commit the > > code yet. Odd, reading your own posts from the past:) The code to fix the crash was committed. > > What is the solution to this puzzle? And, will there ever be an update > to Win32::GUI? I still get the "Can't call method "STORE" on an undefined value during global destruction" now and again and have never managed to track down the actual cause.... Yes, there should be a new build. There have been a few things committed since the last build including the ability to build Win32::GUI under a 64 bit compiler. It's easy enough to build Win32::GUI from source. Rob still reading the list? Aldo? Cheers, jez. |
From: Roode, E. <er...@ba...> - 2011-05-20 18:36:05
|
When some of my Win32::GUI programs exit, I get the above error message. Trapping the error (via %SIG) gives no useful information, as caller() reports that the error occurred at "main.pl, line 0". Searching the web, I found a tantalizing almost-solution in this thread: http://old.nabble.com/Crash-with-perl-5.10-and-Win32%3A%3AGUI-1.6-td16523383.html [ http://goo.gl/UhcgE ] In this thread, one Jeremy White discovers the problem, apparently solves it, then writes: > I think the solution is straightforward but don't want to commit the > code yet. To which Robert May replies, > Thanks for the report and taking the time to look into this. I've > not had a chance to look at what you've done yet, but should get > some time in the next couple of weeks. And that's the end of it. This thread is from May 2008; the last update of Win32::GUI was in February 2008. I feel somewhat like the person who stumbled upon the famous note in the margin of Pierre de Fermat's book. What is the solution to this puzzle? And, will there ever be an update to Win32::GUI? -- Eric J. Roode |
From: flywithp <ffp...@gm...> - 2011-04-16 12:56:05
|
Hi, I'm using Win32::GUI::Scintilla package for my text editor and highlighting multiple words (with whitespace), like this ; "This is a test" chars and whitespace highlighting but this code, not highlighting whitespace chars. How do i do this? "This is a test" (with whitespace highlight) Thank you, Regards... here is my codes; # perl -v use strict; use Win32::GUI; use Win32::GUI::Scintilla; my %faces = ( 'times' => 'Times New Roman', 'mono' => 'Courier New', 'helv' => 'Lucida Console', 'lucida' => 'Lucida Console', 'other' => 'Comic Sans MS', 'size' => '10', 'size2' => '9', 'backcol'=> '#FFFFFF', 'backcolorhight' => '#28C50F', ); my $KEYWORD = q{ this is a test}; # main Window my $Window = new Win32::GUI::Window ( -name => "Window", -title => "Perl Editor", -pos => [100, 100], -size => [400, 400], ) or die "new Window"; my $Editor = $Window->AddScintilla ( -name => "Editor", -pos => [0, 0], -size => [400, 400], -addexstyle => WS_EX_CLIENTEDGE, ) or die "new Edit"; # Init editor Editor(); # Event loop $Window->Show(); Win32::GUI::Dialog(); sub Editor { #perl lexer $Editor->SetLexer(Win32::GUI::Scintilla::SCLEX_PERL); # Set Perl Keyword $Editor->SetKeyWords(0, $KEYWORD); # Win32::GUI::Scintilla::KEYWORDSET_MAX # $Editor->SetKeyWords(0, $D); $Editor->SetProperty("fold", "1"); $Editor->SetProperty("tab.timmy.whinge.level", "1"); # Indenetation $Editor->SetIndentationGuides(1); $Editor->SetUseTabs(1); $Editor->SetTabWidth(3); $Editor->SetIndent(3); # Edge Mode $Editor->SetEdgeMode(Win32::GUI::Scintilla::EDGE_LINE); # $Editor->SetEdgeMode(Win32::GUI::Scintilla::EDGE_BACKGROUND); $Editor->SetEdgeColumn(0); $Editor->SetEdgeColour('00ff00'); $Editor->SetMarginTypeN(1, Win32::GUI::Scintilla::SC_MARGIN_NUMBER); $Editor->SetMarginWidthN(1, 25); $Editor->SetFoldMarginColour(1, '00E5FF'); $Editor->SetMarginTypeN(2, Win32::GUI::Scintilla::SC_MARGIN_SYMBOL); $Editor->SetFoldMarginColour(2, '00E5FF'); $Editor->SetMarginMaskN(2, Win32::GUI::Scintilla::SC_MASK_FOLDERS); $Editor->SetMarginSensitiveN(2, 1); $Editor->SetMarginWidthN(2, 12); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, Win32::GUI::Scintilla::SC_MARK_BOXPLUSCONNECTED); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, '#00FFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEREND, '#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID, Win32::GUI::Scintilla::SC_MARK_BOXMINUSCONNECTED); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID,'#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPENMID,'#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL, Win32::GUI::Scintilla::SC_MARK_TCORNER); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL,'#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERMIDTAIL,'#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, Win32::GUI::Scintilla::SC_MARK_LCORNER); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, '#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERTAIL, '#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, Win32::GUI::Scintilla::SC_MARK_VLINE); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, '#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDERSUB, '#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, Win32::GUI::Scintilla::SC_MARK_BOXPLUS); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, '#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDER, '#000000'); $Editor->MarkerDefine(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN, Win32::GUI::Scintilla::SC_MARK_BOXMINUS); $Editor->MarkerSetFore(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN,'#FFFFFF'); $Editor->MarkerSetBack(Win32::GUI::Scintilla::SC_MARKNUM_FOLDEROPEN,'#000000'); # Define Style $Editor->StyleClearAll(); # Global default styles for all languages $Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_DEFAULT, "face:$faces{'mono'},size:$faces{'size'}"); $Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_LINENUMBER, "back:#CCFF00,fore:#FF00FF,face:$faces{mono},bold"); $Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_CONTROLCHAR, "face:$faces{mono}"); $Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_BRACELIGHT, "fore:#FFFFFF,back:#0000FF,bold"); $Editor->StyleSetSpec(Win32::GUI::Scintilla::STYLE_BRACEBAD, "fore:#000000,back:#FF0000,bold"); # White space # $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_DEFAULT, "back:$faces{'backcolorhight'},fore:#B3FF00,bold,size:$faces{'size2'}"); $Editor->StyleSetSpec (Win32::GUI::Scintilla::SCE_PL_WORD , "underline,size:$faces{'size2'}");# "back:$faces{'backcolorhight'},fore:#B3FF00,bold,size:$faces{'size2'}" } # Main window event handler sub Window_Terminate {-1} sub Window_Resize { if (defined $Window) { my ($width, $height) = ($Window->GetClientRect)[2..3]; $Editor->Move (0, 0); $Editor->Resize ($width, $height); } } -- View this message in context: http://old.nabble.com/How-to-highlight-mutliple-words-%28with-whitespace%29----Win32%3A%3AGUI%3A%3AScintilla--tp31412939p31412939.html Sent from the perl-win32-gui-users mailing list archive at Nabble.com. |
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/ |
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-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: 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: Waldemar B. <wb...@sa...> - 2011-03-27 21:40:46
|
Dnia piątek, 25 marca 2011 o 12:43:14 Aldo Calpini napisał(a): > On 25.03.2011 11:07, Waldemar Biernacki wrote: > > Until now I rewrote my application to use the fix and first tests are > > really promising. By the way, this tremendous GDI object number was due > > to the fact that each label and textfield had its own font which in turn > > is just GDI object and the same with background. > > as I just wrote in another mail, there should be no problem with fonts, > because you create them explicitly. this means the same GDI object is > used for all controls. only the brush is created "on-demand" for > background. Of course you are right. It is not a problem with using font in general but with my using them. > > Syntax of background color in Win32::GUI is little misleading > > (-background => 0xffffff) as it suggests that it is simple attribute of > > a widget. But it is not the case: each background is full GDI object > > too! Maybe - I am just speculating - that was the fundamental reason why > > the background color error raised? Who - at first sight - could see that > > there is a such big difference between -background and -foreground? > > the difference is in the Win32 API. they allow a plain COLORREF for > foreground, but only a HBRUSH for background (even if you just want a > solid color, you have to create a solid brush for this). I thought it > was "user friendlier" to automatically create a brush of the given > color. it's just that I forgot to clean it up afterwards :-) You right again; this syntax is really friendly but the real problem with the error was that it feeds the GDI quota limit vary fast (in my application) - not just the memory. Adding bad desing with fonts and error in Perl 5.10 you can see my problems... :( But thankfull Jeremy code I fixed the error and using Perl 5.8 version with changes in my application give the result that I have quite stable application now. I tried to do it in 5.12 but I didn't manage. At first ExtUtils::FakeConfig from cpan had no 5.12 version. I thank I corrected it but compilation Win32::GUI with gcc failed (tests showed it). Because I can't find ppm for 5.12 so I think I have made a mistake writing the information about Win32::GUI in Perl 5.12. Sorry for that. > maybe it would be a good idea to add a -backgroundbrush option, so you > can pass a Win32::GUI::Brush object to it and the same GDI object will > be used for all controls, as with fonts. This would be fine for I use them (backgrounds) synchronized in my windows so I can get the same colour to the quite big group of widgets. cheers Waldemar. |
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: Aldo C. <da...@pe...> - 2011-03-25 11:41:46
|
On 25.03.2011 11:07, Waldemar Biernacki wrote: > Until now I rewrote my application to use the fix and first tests are really > promising. By the way, this tremendous GDI object number was due to the fact > that each label and textfield had its own font which in turn is just GDI object > and the same with background. as I just wrote in another mail, there should be no problem with fonts, because you create them explicitly. this means the same GDI object is used for all controls. only the brush is created "on-demand" for background. > Syntax of background color in Win32::GUI is little misleading (-background => > 0xffffff) as it suggests that it is simple attribute of a widget. But it is not > the case: each background is full GDI object too! Maybe - I am just > speculating - that was the fundamental reason why the background color error > raised? Who - at first sight - could see that there is a such big difference > between -background and -foreground? the difference is in the Win32 API. they allow a plain COLORREF for foreground, but only a HBRUSH for background (even if you just want a solid color, you have to create a solid brush for this). I thought it was "user friendlier" to automatically create a brush of the given color. it's just that I forgot to clean it up afterwards :-) maybe it would be a good idea to add a -backgroundbrush option, so you can pass a Win32::GUI::Brush object to it and the same GDI object will be used for all controls, as with fonts. cheers, Aldo |
From: Aldo C. <da...@pe...> - 2011-03-25 11:36:17
|
On 23.03.2011 17:12, Jeremy White wrote: > My code was only a hack:) Yes, perlud_free is the ideal place - go ahead > an commit it to CVS:) good, if I remember how to do it :-) (not using CVS anymore since years...) > There may be other objects that need deleting (fonts) and it looks like > there is a minor leak somewhere aswell... nope, with fonts you pass an already created handle, which means the GDI object is destroyed when $font (eg. the Perl object) goes out of scope. the problem occurs only with the brush, which is a GDI object created automatically when parsing windows creation options. > Does this mean you are "back for good"? I really hope so :-) I may need some time to catch up with the current shape of Win32::GUI, but I'm willing to lend a helping hand where I can. cheers, Aldo |
From: Waldemar B. <wb...@sa...> - 2011-03-25 10:08:01
|
Hi, > Cool - do some major testing with your app, and if things are still OK, the > fix (well, a version of it) will get committed to CVS. Until now I rewrote my application to use the fix and first tests are really promising. By the way, this tremendous GDI object number was due to the fact that each label and textfield had its own font which in turn is just GDI object and the same with background. Syntax of background color in Win32::GUI is little misleading (-background => 0xffffff) as it suggests that it is simple attribute of a widget. But it is not the case: each background is full GDI object too! Maybe - I am just speculating - that was the fundamental reason why the background color error raised? Who - at first sight - could see that there is a such big difference between -background and -foreground? So these two problems seems to be overcome for me and I am much more happy! > Interesting that > you are still having memory issues with 5.12. This could be another issue > within Win32::GUI that only manifests in those versions of perl... I have to check it once again. For a few days I've got such a big mess in my Perl environments so I could overlooked something. I hope to do it in this weekend. Cheers, Waldemar. |
From: Jeremy W. <jez...@ho...> - 2011-03-24 09:36:37
|
Hi, Cool - do some major testing with your app, and if things are still OK, the fix (well, a version of it) will get committed to CVS. Interesting that you are still having memory issues with 5.12. This could be another issue within Win32::GUI that only manifests in those versions of perl... Cheers, Jez. > From: wb...@sa... > To: jez...@ho... > Subject: Re: [perl-win32-gui-users] problem of reusing memory > Date: Wed, 23 Mar 2011 22:25:24 +0100 > CC: per...@li... > > Jeremy, > > It works! > > I had to take the 5.8.9 version. Firstly I try to take perl 5.10 and 5.12 > versions but both suffer from this memory problem. > > Thank you for your great help! > > Regards > Waldemar |
From: Waldemar B. <wb...@sa...> - 2011-03-23 21:25:33
|
Jeremy, It works! I had to take the 5.8.9 version. Firstly I try to take perl 5.10 and 5.12 versions but both suffer from this memory problem. Thank you for your great help! Regards Waldemar |
From: Jeremy W. <jez...@ho...> - 2011-03-23 16:14:56
|
> On 23.03.2011 15:42, Jeremy White wrote: > > I'm not sure the approach I use would help you as I draw the whole > > screen (fonts, graphics, backgrounds etc). I've looked at this again, > > and I think I've fixed the bug within Win32::GUI. You mentioned that you > > built Win32::GUI from scratch, so if you replace the DestroyWindow > > method in GUI.xs (around line 2231) with the code below it should fix > > things for you... > > I think this would be better placed in the Perlud_free() function found > in GUI_Helpers.cpp. this is automatically called upon WM_QUIT message > for all windows created by Win32::GUI, so you don't even need to relay > on Perl calling DESTROY on objects. if you want, I can commit this to > CVS as soon as I get to setup my dev. environment :-) My code was only a hack:) Yes, perlud_free is the ideal place - go ahead an commit it to CVS:) There may be other objects that need deleting (fonts) and it looks like there is a minor leak somewhere aswell... Does this mean you are "back for good"? Cheers, Jeremy. |
From: Aldo C. <da...@pe...> - 2011-03-23 15:22:52
|
On 23.03.2011 15:42, Jeremy White wrote: > I'm not sure the approach I use would help you as I draw the whole > screen (fonts, graphics, backgrounds etc). I've looked at this again, > and I think I've fixed the bug within Win32::GUI. You mentioned that you > built Win32::GUI from scratch, so if you replace the DestroyWindow > method in GUI.xs (around line 2231) with the code below it should fix > things for you... I think this would be better placed in the Perlud_free() function found in GUI_Helpers.cpp. this is automatically called upon WM_QUIT message for all windows created by Win32::GUI, so you don't even need to relay on Perl calling DESTROY on objects. if you want, I can commit this to CVS as soon as I get to setup my dev. environment :-) cheers, Aldo |