ANNOUNCE: Win32::VisualStyles V0.02
All, Back in May there was a discussion on this list about Visual Styles (aka XP Styles). Up to now we have been coping with applying style by copying a manifest file into the perl bin directory. This is unsatisfactory for a number of reasons. (1) It is difficult to make this work when packing executables (usinfg PAR for example) (2) It is difficult to test both with and without visual styles - especially now that Vista may cache the manifest (3) It is a continual problem with keeping newcomers informed with how to do this. I have created a module, Win32::VisualStyles, that allows you do apply a "V6 Common Control Activation Context" (to use some of the buzz words) at run-time. In particular this means that it is easy to pack an executable - it's just another dependency - and it's easy to test with and without visual styles simply by adding "-MWin32::VisualStyles" to the commandline. V0.02 is currently propagating to CPAN. The only differences from V0.01 are to cope better with the build process - there is no internal difference to the code that runs. You can download the source from CPAN and build it: http://search.cpan.org/~robertmay/Win32-VisualStyles-0.01/ or it should be available for 5.8 and 5.10 from ActiveState's new PPM repository. Full documentation included with the module, but let me know if you need any further help. Regards, Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: Producing a notification window over icon region
2008/10/15 Andrew Black <[EMAIL PROTECTED]>: > I would like to produce a noticification window - in the same way as > programs like Outlook do when new mail comes in. Is this possible with > Perl or should I be looking for another tool. > > My first attempt is > perl -MWin32 -e "sleep(10); Win32::MsgBox('take a break')" > but this produces a msgbox hidden under the window you are currently > looking at > > Afraid I am not a great windows programmer.. Try this as a starting point: http://www.mail-archive.com/[EMAIL PROTECTED]/msg05020.html Regards, Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: rsync for Win32
On 10/03/2008, Sisyphus <[EMAIL PROTECTED]> wrote: > But, afaict from 'perldoc perlhack', if I want to stay in touch with the > current perl developments I need to be able to download the latest source by > running: > > rsync -avz rsync://public.activestate.com/perl-current/ > > Only problem is .. I'm having trouble finding a Windows version of 'rsync' > that's capable of succesfully running that command. Any advice ? I use the cwRsync distribution (www.itefix.no/cwrsync/), which I believe is just a packaging of the cygwin rsync. I comes with a couple of additional utilities, including a good framework batch file (which includes setting CYGWIN=nontsec in the environment). I've successfully pulled the perl sources using it on Win98, win2K and WinXP. Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: Registerhotkey() Using Win32 API and GUI
On 24/09/2007, Veli-Pekka Tätilä <[EMAIL PROTECTED]> wrote: > Robert May wrote: >>> Has anyone gotten the system wide RegisterHotkey and UnrEgister hotkey >>> Win32 functions working with Win32::GUI and Win32::API? >> See here: >> http://www.mail-archive.com/[EMAIL PROTECTED]/msg05248.html > > Now the only big question is what was the difference to my code? > the only major differences I can see is at a gllance, with a screen > reader, are as follows: [snip] > Last but not least, you use a nice constant like: > > VK_A > > Where I use the ASCII value > > ord 'q' > > since I read in Petzold that the virtual key codes for letters are the > ASCII codes for those letters. Does the case matter normally or since > shift is down? > > ord 'Q'; # is obviously quite different from the lowercase q. This is the difference. The virtual key code for a key does not change when the shift key is down. It's the combination of seeing the virtual key code for the shift key and a letter key that allows TranslateMessage convert virtual key codes in WM_KEYDOWN/WM_KEYUP messages to the WM_CHAR messages containing the 'character' to be used. The virtual key codes for the letter keys are (on an English keyboard) the ASCII codes for the UPPER case letters. > Here are the significant snippets from my original: [snip] > RegisterHotKey > ( >$win->{'-handle'}, HOTKEY_ID, >MOD_SHIFT | MOD_CONTROL, >ord 'q' > ) or die "HOtkey registration failed: $^E\n"; I think if you use ord 'Q' rather than ord 'q' your code would work (untested). Regards, Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: Registerhotkey() Using Win32 API and GUI
On 23/09/2007, Veli-Pekka Tätilä <[EMAIL PROTECTED]> wrote: > Hi, > Has anyone gotten the system wide RegisterHotkey and UnrEgister hotkey > Win32 functions working with Win32::GUI and Win32::API? See here: http://www.mail-archive.com/[EMAIL PROTECTED]/msg05248.html Regards, Rob. > I just tried but > my event handler never gets called. Any help as to why this is would be > appreciated. I hope it's some quirk in my own code I just haven't > noticed. > > My understanding is this: > YOu call RegisterHotkey with a window handle via which virtual keycode > messages should be posted, a unique ID for that window handle to > distinguish multiple key handlers, a list of modifier keys that need to > be down and finally a virtual keycode to match for the posting to happen > in the first place. UnregisterHotkey is much the same except that only > the first two params are needed. > > The first problem I had was having to manually dig up constants like > MOD_WIN from winuser.h (VC2005 Express), it appears to be missing in the > listing in Win32::GUI::Constant. The second thing was that I couldn't > find a method of retrieving the Win32 handle from a Win32::GUI::Window > without having to look at its internals. Thirdly and finally, my event > handler is never called. This might either be some glich in importing > the functions, registering the hotkey handlers or adding event handling > hooks to Win32::GUI, which I've never done before. > > Here's the whole code, for your information. What it does is create a > dummy, currently visible window, register a hotkey handler for > shift+ctrl+q, and if that handler is triggered, then prints out the > params in the console: > > > use strict; use warnings; > > use constant {MOD_CONTROL => 2, MOD_SHIFT => 4}; # HOtkey modifiers from > winuser.h > > use constant qw|HOTKEY_ID 32|; # Almost any int will do. > > use Win32::GUI qw||; use Win32::GUI::Constants qw|WM_HOTKEY|; > use Win32::API; > > # Import the funcs use to register system wide hotkey notifications. > Win32::API->Import > ( >user32 => # target window, some id, modifiers, virtual key code. >'BOOL RegisterHotKey(HWND w, int id, UINT mod, UINT vk)' > ); > > Win32::API->Import > ( >user32 => >'BOOL UnregisterHotKey(HWND w, int id)' > ); > > my $win = Win32::GUI::Window->new > ( >-name => 'main', -text => 'main', -size => [320, 240], >-onTerminate => \&quit > ); > $win->Show(); > > > # Process the virtual key codes sent to us. > $win->Hook(WM_HOTKEY, \&key); > > # Register hotkey, for alphanumerics ASCIi code is virtual key code. > RegisterHotKey > ( >$win->{'-handle'}, HOTKEY_ID, >MOD_SHIFT | MOD_CONTROL, >ord 'q' > ) or die "HOtkey registration failed: $^E\n"; > > Win32::GUI::Dialog(); > > sub quit > { # Unregister hotkey handler and quit. >UnregisterHotKey($win->{'-handle'}, HOTKEY_ID) or die "Unregistration > failed: $^E\n"; >-1; > } # sub > > sub key > { # Just a debug print of the key postedd to us. >print "Key with params: @_\n"; >1 > } # sub > > Finally, a cool solution to the hotkey problem and many other uses, in > which hooks are desired would be this: > > Create a DLL in C which does the actual hooking and is somewhat > customizable in terms of what it posts back to its user i.e. functions > to specify how to match params and which window receives the message. > > Post the desired data to a window registered with the DLL using > WM_COPYMESSAGE. > Then use Win32::API to wrap that DLL and have a possibly invisible > Win32::GUI::Window receive the things that were hooked. > > Even better would be a Perl module which encapsulates having to create > the window and wrap the DLL. > > There are plenty of code examples for hooks in the code project. > Googling for Win32 hooks produces some nice links, for instance. I've > used hooks a bit in screen reading but the code is way too ugly to be > published, . And for screen reading, Win32::ActAcc is infinitely > better. > > > -- > With kind regards Veli-Pekka Tätilä ([EMAIL PROTECTED]) > Accessibility, game music, synthesizers and programming: > http://www.student.oulu.fi/~vtatila > ___ > Perl-Win32-Users mailing list > Perl-Win32-Users@listserv.ActiveState.com > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs > -- Please update your address book with my new email address: [EMAIL PROTECTED] ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: Perl Help - Addlabel
On 24/08/07, TR Thomas Rundo (8373) <[EMAIL PROTECTED]> wrote: > The problem I am having is that as I am adding (AddLabel) labels onto the > window unless I have a messagebox popup to stop the app and wait for user > input, you won't see the Add Labels. I have a messagebox at the very end > that will show them all, but I need to show them as the Perl script > proceeds, basically like a status. What am I doing wrong? You don't say so, but I assume that you are talking about the AddLabel() method from the Win32::GUI package? If so, then try putting a Win32::GUI::DoEvent(); call after each AddLabel() call. There are probably better ways of achieving what you want to do, but as you don't give any further details, or any sample code, it's difficult to advise. Regards, Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [perl-win32] Re: Win32::Printer - Multiple Line Output
$Bill Luebkert wrote: Timothy Johnson wrote: Maybe try /r/f instead of /r/n? I'd just use \n which should be output as \r\n if you haven't use binmode. I doubt it. The Win32::Printer::Write() method calls the Win32 API directly (TextOut() OR DrawText()). There's no PerlIO layers anywhere near this output. Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [perl-win32] RE: Win32::Printer - Multiple Line Output
Try using 'Draw Mode' (DM) rather than 'String Mode' (SM) - that means using the $height = $dc->Write($text, $x, $y, $width, $height, [$format, [$tab_stop]]); form of the Write() call. Rob. Jack D. wrote: -Original Message- From: Timothy Johnson [mailto:[EMAIL PROTECTED] Sent: June 8, 2006 4:31 PM To: Jack D.; perl-win32-users@listserv.ActiveState.com Subject: RE: Win32::Printer - Multiple Line Output Maybe try /r/f instead of /r/n? I tried "\r\f" ( backslashes:-) ) with the same erroneous one-line result. Any other ideas? So far I'm down 12 pieces of paper trying to figure this out. In desperation, I have sent a direct e-mail to the author. I'll post a follow-up if I get a reply. In the meantime - I'm open to any other solutions. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jack D. Sent: Thursday, June 08, 2006 2:55 PM To: perl-win32-users@listserv.ActiveState.com Subject: Win32::Printer - Multiple Line Output I'm trying to print multiple lines to Win32::Printer *without* using a temporary file. Everytime it mushes the data into one line with little boxes being printed where the carriage returns are. Can anyone help me out here? ##Sample Code## use Win32::Printer; my @array = keys %ENV; printAlpha(); sub printAlpha { my $dc = new Win32::Printer( papersize => A4, description => 'Test Print', unit=> 'mm') or die "Failed to create object"; if ($dc) { my $textToPrint = join("\r\n",@array); my $font = $dc->Font('Times New Roman', 12); $dc->Font($font); $dc->Color(0, 0, 0); $dc->Write($textToPrint, 10, 10); $dc->Close; } } __END__ Jack ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [perl-win32] Re: The Command Prompt encoding
> Benct Philip Jonsson wrote: >> Is the encoding used in the Windows Command Prompt >> "cp850"? I need to know that to use the Encode >> module to convert in order to have perl handle >> accented characters right. Reinhard Pagitsch replied: Try chcp in a DOS BOX, this shows you the active code page in command prompt. (on my XP it shows me 850 which is cp850) From the command prompt of my win98 box: C:\WINDOWS>chcp Active code page: 850 C:\WINDOWS>mode con cp Active code page for device CON is 850 Prepared code pages: code page 850 MODE status code page function completed You can get this info programatically in perl using Win32::Console, which you should do, as you have no guarantee that any particular console is actually using cp850. C:\WINDOWS>perl -MWin32::Console -e "print Win32::Console::OutputCP()" 850 Regards, Rob. -- Robert May Win32::GUI, a perl extension for native Win32 applications http://perl-win32-gui.sourceforge.net/ ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [perl-win32] Re: Tk beep on Win2K?
Lyle Kopnicky wrote: $Bill Luebkert wrote: [snipped stuff about using an ICA session and not getting beeps] Apparently what you need to do is get the PC or whatever you are logging in from to generate the beep rather than the MB speaker. I can do that, by typing ^G in the console and hitting Enter. But I can't do it from a Perl program, running via wperl. I'm not familiar with Tk and don't know what Tk's beep() uses as it's underlying Win32 API call, but the remarks section for the MessageBeep() call at MSDN says: "Terminal Services: To send a beep to a client, use the Beep function. The Beep function is redirected to the client, whereas MessageBeep is not, except on Windows NT 4.0 where MessageBeep(-1) calls Beep." http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/messagebeep.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/beep.asp I also don't know if ICA sessions are the same a Terminal Services ones, but if you have Win32::API, do you get any noises from either of the following snippets? #!perl -w use strict; use warnings; use Win32::API(); Win32::API->Import("User32", "MessageBeep", "l", "V"); MessageBeep(-1); __END__ #!perl -w use strict; use warnings; use Win32::API(); Win32::API->Import("Kernel32", "Beep", "LL", "L"); Beep(750, 300); __END__ Regards, Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] Re: Possible DynaLoader or MinGW bug?
Sisyphus wrote: - Original Message - From: "Robert May" . . A series of tests: Drop - ok DropF - fails AropF - fails DropFi- fails DropFile - fails DropFiles - fails DropX - fails DropFx- fails DropFilesx- fails xDropFiles- ok Win32::DropF - fails Win32::xDropF - ok Appears to indicate that any module whose last component name starts with 'DropF' fails. Except that you've stated that 'AropF' fails and 'DropX' fails. Or did you mean to write that they are ok ? Careless on my part. AropF and DropX were OK. Off to find a mingw forum/list. You'll find MinGW mailing list subscription details at www.mingw.org (somewhere). But it's hard to expect helpful answers from them because of all the perl stuff that's involved in your test case. Better if you could construct a test case that was pure C. But give it a try anyway (even if you can't construct a pure C test case) - 'DropF' might mean something to someone there. You could just try updating your gcc-3.4.4 and also updating your mingw32-w32api (assuming your current version is not the latest). My feeling is that even if you do get an explanation (and I'm sceptical about that), the solution will be to simply update anyway. We've crossed messages - after reading the posting guidelines I upgraded to the latest 'candidate' releases (I was on the leading stable releases), and my problems went away. Thanks again, Rob.(M) ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] Re: Possible DynaLoader or MinGW bug?
Robert May wrote: [possible bug with either mingw or DynaLoader under win98, narrowed down to a mingw bug] Now I just need to find out what the difference is between the 2 dll's. MS's Dependency walker (Depends.exe, comes with the platform SDK) loads both fine, and doesn't reveal anything very useful, but a binary diff of the 2 files (which are, incidently, exactly the same size) shows areas of significant difference. I have no idea if this is expected or not, but my gut feeling is that it is suspicious. Off to find a mingw forum/list. As a final follow-up: Before posting a bug report to the MinGW team I downloaded the candidate release for gcc 3.4.5, and the problem goes away. I should have tried this earlier :-) For clarification my MinGW install is now: gcc-core 3.4.5 binutils 2.16.91 mingw-runtime 3.9 w32api 3.6 Thanks for listening. Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] Re: Possible DynaLoader or MinGW bug?
Sisyphus wrote: - Original Message - From: "Robert May" . . Steps to invoke problem: (1) run: h2xs -A -n SomeModule (2) cd into the created SomeModule directory (3) run the incantation: perl -MConfig_m Makefile.PL nmake nmake test Generally this works fine, and the (one) test passes, but if 'SomeModule' is 'DropFile' or 'DropFiles' I get the following test result (re-formatted for readability: C:\Perl\5.8.7\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib\lib', 'blib\arch')" t\DropFiles.t # Failed test (t\DropFiles.t at line 9) # Tried to use 'DropFiles'. t\DropFilesNOK 1# Error: Can't load 'C:\WINDOWS\Desktop\xs_test\DropF\DropFiles\blib\arch/auto/DropFiles/DropFil es.dll' for module DropFiles: load_file:The operation completed successfully at C:/Perl/5.8.7/lib/DynaLoader.pm line 230. The problem disappears if I compile with VC6, making me think in more likely to be a MinGW issue, but I'd like to be able to build with MinGW without choosing a different module name. Are you using the same 'nmake' in both instances ? (If so we can rule 'nmake' out as the culprit.) Yes (double checked). I can't reproduce the problem - though I haven't got exactly the same environment - Windows2000, using 'dmake', gcc-3.4.4, AS build 810. However, I can't see that any of those differences account for the strange behaviour you're getting. (My immediate thoughts were that you must be doing something silly - though, of course, that's not necessarily so - and I can't for the life of me think of what that "silliness" could possibly be :-) I've now tried it one win2k, and can't reproduce the problem there either (with an almost identical setup). I was hoping that I was doing something silly, and that posting to the world would reveal what it was. I've spent a long time on this one now, but I do seem to be getting somewhere. I'd create 2 separate directories for the creation of DropFiles - one for creating with MinGW/EU::FC, and one for creating with VC6. Then compare the 2 generated DropFiles.c. (Maybe also compare some of the other files - eg the Makefile that was generated in both cases.) Somewhere there has to be a difference that matters. Nice idea. Source is identical. Makefiles, obviously, aren't identical, but to the best of my knowledge the differences can be justified and won't cause any issues. What happens if you name the module (successively) DropFile, DropFil, Drop, , Dr, D ? At what point does the problem go away ? A series of tests: Drop - ok DropF - fails AropF - fails DropFi- fails DropFile - fails DropFiles - fails DropX - fails DropFx- fails DropFilesx- fails xDropFiles- ok Win32::DropF - fails Win32::xDropF - ok Appears to indicate that any module whose last component name starts with 'DropF' fails. Interesting, but doesn't get me much closer to a solution. So I set about with the perl source code, and now understand a large amount of the internals of DynaLoader. Looking at where the failure appeared to be happening, and tracing throw the perl source (win32/win32.c and win32/dl_win32.xs mainly) the failure appeared to be comming from a LoadLibrary() call. So I took 2 dlls produced by the above process, both compiled and linked in the same way with gcc; one that works (DropX.dll) and one that doesn't (DropF.dll), and wrote a simple perl script to attempt to load them using LoadLibrary() directly (using Win32::LoadLibrary()). DropX.dll loads fine; DropFiles.dll fails (returns '0' as a handle), but the LoadLibrary call does not SetLastError, resulting in any call to GetLastError returning 0; 0 is interpreted as NO_ERROR, hence the mis-leading error message from DynaLoader. So this appears to be a mingw or windows api issue, and not a problem with DynaLoader. Now I just need to find out what the difference is between the 2 dll's. MS's Dependency walker (Depends.exe, comes with the platform SDK) loads both fine, and doesn't reveal anything very useful, but a binary diff of the 2 files (which are, incidently, exactly the same size) shows areas of significant difference. I have no idea if this is expected or not, but my gut feeling is that it is suspicious. Off to find a mingw forum/list. Thanks for your help. Regards, Rob(M). -- Robert May Win32::GUI, a perl extension for native Win32 applications http://perl-win32-gui.sourceforge.net/ ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Possible DynaLoader or MinGW bug?
I've run into an 'interesting' issue when building some of my own XS extensions - I've narrowed the issue somewhat, but am about at the limit of my knowledge (or possibly already beyond it). Can anyone else duplicate the problem? My setup: Win98 Perl 5.8.7 Activestate build 813 MingW (gcc 2.3.2, win32api 3.6, runtime 3.9) ExtUtils::FakeConfig V0.06 Steps to invoke problem: (1) run: h2xs -A -n SomeModule (2) cd into the created SomeModule directory (3) run the incantation: perl -MConfig_m Makefile.PL nmake nmake test Generally this works fine, and the (one) test passes, but if 'SomeModule' is 'DropFile' or 'DropFiles' I get the following test result (re-formatted for readability: C:\Perl\5.8.7\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib\lib', 'blib\arch')" t\DropFiles.t # Failed test (t\DropFiles.t at line 9) # Tried to use 'DropFiles'. t\DropFilesNOK 1# Error: Can't load 'C:\WINDOWS\Desktop\xs_test\DropF\DropFiles\blib\arch/auto/DropFiles/DropFiles.dll' for module DropFiles: load_file:The operation completed successfully at C:/Perl/5.8.7/lib/DynaLoader.pm line 230. # at (eval 3) line 2 # Compilation failed in require at (eval 3) line 2. # BEGIN failed--compilation aborted at t\DropFiles.t line 9. # Looks like you failed 1 test of 1. t\DropFilesdubious Test returned status 1 (wstat 256, 0x100) DIED. FAILED test 1 Failed 1/1 tests, 0.00% okay Failed Test Stat Wstat Total Fail Failed List of Failed --- t\DropFiles.t1 256 11 100.00% 1 Failed 1/1 test scripts, 0.00% okay. 1/1 subtests failed, 0.00% okay. It's an odd error message! The problem disappears if I compile with VC6, making me think in more likely to be a MinGW issue, but I'd like to be able to build with MinGW without choosing a different module name. Any suggestions on where to go next appreciated. Thanks for your time. Regards, Rob. -- Robert May Win32::GUI, a perl extension for native Win32 applications http://perl-win32-gui.sourceforge.net/ ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] RE: Perl Bug (again)
[snip ... why doesn't "my $i if 0;" generate a warning under "use warnings;"] Glenn Linderman wrote: Partly because the behaviour was probably implemented unintentionally (hence no original warning or error), and has been treated (once discovered by those nefarious end-user types) as a feature in some code. Adding a warning then makes existing code noisier than it was, so the feature can only be added to "blead" not "maint" (if you are familiar with Perl development terminology). I _think_ I recall seeing comments on p5p that there is now a warning for that construct in blead? At least it was discussed. Try downloading Perl 5.9.x and see, if you really want to be sure. Anyway, it is currently a "known gotcha"... there is no other programming language that I am aware of that even allows such syntax, to "conditionally declare" variables, so it is surprising that you even attempted such... which has kept this from being a bigger problem than it would be otherwise. A (deprecated) warning was added in 5.9.1 according to this p5p summary: http://www.nntp.perl.org/group/perl.perl5.summary/98 Rafael noted also that the regression tests produce lots of warnings "Deprecated use of my() in conditional", referring to the dubious and now deprecated construct my $foo = $bar if $quux; So the warning is maybe too noisy (although it indicates a bug waiting to happen.) Rafael and Dave Mitchell proposed some alternatives, but the current form of the warning is likely to go into 5.9.1, even if it's made lighter afterwards. I has been discussed on p5p more recently (in the last few months) but I can't quickly turn p a reference. Regards, Rob. -- Robert May Win32::GUI, a perl extension for native Win32 applications http://perl-win32-gui.sourceforge.net/ ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] RE: Perl Bug (again)
John Deighan wrote: At 01:06 PM 2/17/2006, Joe Discenza wrote: Fascinating! You have one misconception right off: The "my" line is never executed (not even to make the new variables) if $L is false. OK, then, consider this program. Notice that there's a global $i which has the value 5. Now, when func() is called, if the "my $i" did not create a new lexically scoped variable, then the print line would print "i = 5". But it doesn't - obviously because the lexical variable was created, but is undefined because $b is false. our $i = 5; our $b = 0; func(); sub func { my $i = 3 if $b; print("i = $i\n"); } my is a compile time directive that creates the lexically scoped $i, giving is scope from its definition until the end of the enclosing block. Assignment is a run time operation. In your example the modified assignment doesn't get executed, so the value of $i is *not defined*, in current perl's it happens to take the 'undef' value. In the original OPs question he had the modified assignment inside a loop. persyn says this at the end of the 'Statement modifiers' section: NOTE: The behaviour of a my statement modified with a statement modifier conditional or loop construct (e.g. my $x if ...) is undefined. The value of the my variable may be undef, any previously assigned value, or possibly anything else. Don't rely on it. Future versions of perl might do something different from the version of perl you try it out on. Here be dragons. So, ensure you separate the my $i and the modified assignment to ensure you know what's happening: my $i; $i = 3 if $b; Regards, Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] Ok with perl 5.8.3 on win2000, nok with perl 5.8.7 on winXP
I see that Glenn L just beat me to a reply, but here's my take. DonKiShoot wrote: This piece of code works fine on windows 2000 with perl 5.8.3.809 but not on windows xp with perl 5.8.7.815 and i don't find why. So long as you are using the same version of Win32::GUI in both cases, you should expect the same behaviour. As Glenn pointed out there was a bug introduced to the TrackPopupMenu() method that stopped the 3-argument call working correctly - it existed in Win32:GUI v1.02 only, and so long as you have warnings turned on, it generates a warning, so it doesn't look like this is your problem. (You do have warnings turned on?) This little code is for having a little menu appear when right click on tray icon. In the future, short but *COMPLETE* examples are best, as then we can run your code and see if we get the same issues without having to guess what the rest of your script looks like. In the first case : when i click on "About" in the little menu, i've got the popup About (Great !!!). In the second case : i got the little menu but nothing appear when i click on "About" and no warning message who said " About clicked ..." It seems that with perl 5.8.7.815 TrackPopupMenu doesn't want to work. I think it more likely that something has changed with the perl garbage collection between 5.8.3 and 5.8.7 - let me try to explain. sub icoTrayicon_RightClick { my ($x,$y) = Win32::GUI::GetCursorPos(); warn ("\n Tray icon right clicked ..."); my $icoMenu = Win32::GUI::MakeMenu( "tray" => "tray", " > -" => 0, " > &Config" => "Config", " > &About" => "About", " > E&xit" => "Exit", ); warn ("\n Start popup menu tracking ..."); $winMaster->TrackPopupMenu($icoMenu->{tray},$x,$y); warn ("\n Tray icon right clicked out ..."); return 1; } 1. When you call TrackPopupMenu() like this and click on a menu item, TrakPopupMenu() posts a message to the windows message queue depending on which menu item is clicked. 2. When this subroutine exits, $icoMenu goes out of scope, and hence the menu object that it refers to gets destroyed - when it gets destroyed is not defined, but my experience with the current Perls (5.8.6, 5.8.7) is that that happens immediately. 3. After your subroutine has exited, control returns to Win32::GUI::Dialog(), which pulls the message posted in (1) from the message queue, but then can't find the menu object that the message refers to (as it already got destroyed). The easiest solution is to pull the code my $icoMenu = Win32::GUI::MakeMenu( ... ); out of the subroutine, and put it somewhere near the start of your script in file(global) scope - this keeps it in scope at all times, and prevents the menu object being destroyed until your script exits. [As an aside, this also works around another problem where calling Win32::GUI::MakeMenu repeatedly (as you do) leaks memory] I may be wildly off the mark, as you've not really posted enough code for me to see what else might be going on, but I hope this helps. Regards, Rob. -- Robert May Win32::GUI, a perl extension for native Win32 applications http://perl-win32-gui.sourceforge.net/ ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] Win32::GUI: How do I use a splitter (window "frames")
I posted this example to the list not that long ago. I've since corrected it so that it doesn't leave ugly lines all over the place. Regards, Rob. #!perl -w use strict; use warnings; use Win32::GUI; my $mw = Win32::GUI::Window->new( -title => "Splitter Test", -pos => [100,100], -size => [500,400], -onResize => \&main_resize, ); $mw->AddTextfield( -name => "TF1", -multiline => 1, -width => 200, ); $mw->AddSplitter( -name => "SP", -left => 200, -width => 5, -onRelease => \&do_splitter, ); $mw->AddTextfield( -name => "TF2", -multiline => 1, -left => 200 + $mw->SP->Width(), ); $mw->Show(); Win32::GUI::Dialog(); exit(0); # NEM splitter event gets 2 parameters. The first (as always) # is the window object the event came from - in this case the # splitter window; The second depends on the splitter orientation: # if horzontal it is the top coordinate; if vertical it is # the left coordinate. (coordinates relative to the parent's # client area) # The splitter window is moved by the splitter object, so you only # have to re-position your other windows sub do_splitter { my ($splitter, $coord) = @_; $mw->TF1->Width($coord); $mw->TF2->Left($coord+$mw->SP->Width()); # Swap these next 2 lines to see the 'bug' come back #$mw->TF2->Width($mw->ScaleWidth()-$mw->SP->Width()); $mw->TF2->Width($mw->ScaleWidth()-$mw->SP->Width()-$coord); } sub main_resize { my $self = shift; $self->TF1->Height($self->ScaleHeight()); $self->SP->Height($self->ScaleHeight()); $self->TF2->Resize($self->ScaleWidth()-$self->TF1->Width()-$self->SP->Width(), $self->ScaleHeight()); } __END__ A. Pollock wrote: I built a simple Win32::GUI application which connects to an Access database containing hierarchical records and builds a tree view out of them. Now I would like to extend the application so that clicking on a record in the tree in the right-hand pane will display the record details in a left hand pane. Try as I might, I can nowhere find any example program that uses a moveable splitter to separate a Window into panes or "frames." Can anybody give me a simple example showing how to set up frames in Win32:GUI and put something in them? I'm an idiot without examples to guide me. Thanks! ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] using MS Excel grid
Octavian Rasnita wrote: Is it possible to insert an MS Excel grid control in a Win32::GUI application? I know that there is Win32::GUI::Grid control that can be used, but it is not so accessible for screen readers.. You might investigate whether it is possible using Win32::GUI::AxWindow - it should be able to host any ActiveX capable application. Get it from: http://rocherl.club.fr/Win32GUI.html#AxWindow Regards, Rob. -- Robert May Win32::GUI, a perl extension for native Win32 applications http://perl-win32-gui.sourceforge.net/ ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] Re: How to disable a control without changing appearance
Lynn. Rickards wrote: Chris Rogers wrote: I'm looking for a way to disable a control (widget) without changing it's appearance. I would like to be able to do this for any type of control. Any help would be greatly appreciated. Thanks, Chris Tk? Win32? Either way, what comes to mind instead of disabling, is configuring/binding to an empty sub. For Win32::GUI use $control->Enable(0); Regards, Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] MDI Windows and Icons
Chris Rogers wrote: I have been trying to set an icon for an MDIFrame. I also need to set different icons for the Child windows. I am using Win32::GUI 1.03 with Activestate 5.8.7 along with Komodo and Perlapp. In the past, I could never get the "-icon=>$icon" to work There is, as far as I can see from the documentation and the source code no such '-icon' option for windows. so I had to use Win32::GUI::Class to set the window icon and that seemed to work just fine. That's one way to do it. $window->SetIcon($icon) is another (and in this case probably simpler). [snip] *my $icon = new Win32::GUI::Icon("c:\\JS1G.ICO"); my $WC = new Win32::GUI::Class(-name => "mywindowclass", -icon => $icon,);* You need to subclass the relevant widget class. This would work: my $WC = WIn32::GUI::Class->new( -name => "MyMDIFrameSubClass", -icon => $icon -widget => 'MDIFrame', ); [ snip ] In short: How do I set one icon for an MDIFrame and different icons for MDIChild windows?? Here's the 2 ways to do it: #!perl -w use strict; use warnings; use Win32::GUI; my $icon = new Win32::GUI::Icon("c:\\JS1G.ICO"); my $mw = Win32::GUI::MDIFrame->new( -text => 'Main Window', -width => 1024, -height => 768, ) or die "frame creation failed: [EMAIL PROTECTED]"; $mw->SetIcon($icon); my $mc = $mw->AddMDIClient( -firstchild => 100, ) or die "client creation failed: [EMAIL PROTECTED]"; my $cw = $mc->AddMDIChild( -name => 'window1', -text => 'Window1', -pos => [100, 100], -size => [810, 610], ) or die "child creation failed: [EMAIL PROTECTED]"; $cw->SetIcon($icon); $mw->Show(); Win32::GUI::Dialog(); exit(0); __END__ #!perl -w use strict; use warnings; use Win32::GUI; my $icon = new Win32::GUI::Icon("c:\\JS1G.ICO"); my $frame_class = new Win32::GUI::Class( -name => "mywindowclass", -icon => $icon, -widget => "MDIFrame", # use the MDIFrame windowproc ); my $child_class = new Win32::GUI::Class( -name => "mychildwindowclass", -icon => $icon, -widget => "MDIChild", # use the MDIChild windowproc ); my $mw = Win32::GUI::MDIFrame->new( -text => 'Main Window', -size => [1024,768], -class => $frame_class, ) or die "frame creation failed: [EMAIL PROTECTED]"; my $mc = $mw->AddMDIClient( -firstchild => 100, ) or die "client creation failed: [EMAIL PROTECTED]"; my $cw = $mc->AddMDIChild( -name => 'window1', -text => 'Window1', -pos => [100, 100], -size => [810, 610], -class => $child_class, ) or die "child creation failed: [EMAIL PROTECTED]"; $mw->Show(); Win32::GUI::Dialog(); exit(0); __END__ As an aside a complete but minimal example showing your problem is preferable so that it's quick and easy to run it, and so that we don't have to work out what else we need to add in order to get your code to run. Regards, Rob. -- Robert May Win32::GUI, a perl extension for native Win32 applications http://perl-win32-gui.sourceforge.net/ ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] console echo
Spencer_Lists wrote: I have tried everything I can think of to echo keypresses. Here is my attempt to do it with Win32Console. I can get the key values and everything else returned by input but I just can't figure out how to echo the input. Sorry about the text formatting, my e-mail program messes it up and will not allow me to change it. use strict; use Win32::Console; my $console = Win32::Console->new(STD_INPUT_HANDLE); my $return = $console-> Mode(ENABLE_ECHO_INPUT); my $chars = 0; my $string; until ($chars eq "\r") { my @list = $console->Input(); $chars = chr($list[5]); $string .= $chars if($list[1] == 1);# only record down keys # [0] event type 1 for kbd [1] key up or down? [2] repeat count [3] keycode [4] scancode [5] ascii value [6] control key states ??? print "\n string is $string\n" if($list[1] == 1); } print "\nDONE"; exit; From the MSDN documentation: ENABLE_ECHO_INPUT - Characters read by the ReadFile or ReadConsole function are written to the active screen buffer as they are read. This mode can be used only if the ENABLE_LINE_INPUT mode is also enabled. ENABLE_LINE_INPUT - The ReadFile or ReadConsole function returns only when a carriage return character is read. If this mode is disabled, the functions return when one or more characters are available. So it appears that you can't use ENABLE_ECHO_INPUT in the way you are trying to. You can echo the characters yourself with a print, if you turn off buffering of STDOUT: #!perl -w use strict; use warnings; use Win32::Console; my $console = Win32::Console->new(STD_INPUT_HANDLE); my $char = ''; until ($char eq "\r") { my @list = $console->Input(); $char = ''; if($list[0] == 1) { # only keys, not mouse events if($list[1] == 1) { # only key down events $char = chr($list[5]); local $|=1; # auto-flush print $char; } } } exit; __END__ I think that Term::ReadKey is probably easier although in this example I need to press the key twice to get it to exit - if anyone can fix or explain why then I'd be grateful. #!perl -w use strict; use warnings; use Term::ReadKey; ReadMode(3); # cbreak mode - doesn't need cr/lf to flush input my $char=''; until($char eq "\r" ) { # to exit $char = ReadKey(0); print $char; } ReadMode(0); # Reset tty mode before exiting exit(0) __END__ Regards, Rob. -- Robert May Win32::GUI, a perl extension for native Win32 applications http://perl-win32-gui.sourceforge.net/ ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] I am using **split** incorrectly?
Alejandro Santillan Iturres wrote: [snip] $textcomplete="Mary has a little lamb\nMary has a little lamb which is black!"; $i=0; @textinlines=split(/\n/,$textcomplete); foreach(@textinlines){ print "$i:$textinlines[$i]\n"; @textinchars=split(//,$textinlines[$i]); foreach(@textinchars){print "$textinchars[$j]:";$j++;} $i++; print "\n"; } and produces the result: 0:Mary has a little lamb M:a:r:y: :h:a:s: :a: :l:i:t:t:l:e: :l:a:m:b: 1:Mary has a little lamb which is black! :w:h:i:c:h: :i:s: :b:l:a:c:k:!::: Instead of: 0:Mary has a little lamb M:a:r:y: :h:a:s: :a: :l:i:t:t:l:e: :l:a:m:b: 1:Mary has a little lamb which is black! M:a:r:y: :h:a:s: :a: :l:i:t:t:l:e: :l:a:m:b: :w:h:i:c:h: :i:s: :b:l:a:c:k:!: Anyone sees the mistake? Try resetting $j to zero before the start of the inner loop Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] Creating a grid control
Octavian Rasnita wrote: Does anyone know if it is possible to create a grid control which is accessible using the keyboard only (no mouse)? I have tried a few examples from the Win32::GUI::Grid package, but I could select a cell only by using the mouse, but I would like to have a grid in which I can navigate using the arrow keys in order to select the rows. Interesting - once you have a cell selected, then keyboard navigation works fine, but I can't (quickly) find a way of being able to get the focus into the grid using the keyboard. It should be possible, but would require more time to investigate the underlying Grid Control code than I have right now. Good luck with finding a solution, and please let us know if you find one. Regards, Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] Re: Need help with Perl GUI
Jaime Teng wrote: Too bad win32::GUI does not have much documentations as well. Does anyone have a good win32::gui website or book even? What exists as formal documentation for Win32:GUI is available (as of yesterday) at http://perl-win32-gui.sourceforge.net/ We're actively working on completing the documentation and bringing it up to date, but it's a bit of a slow process. Regards, Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] RE: creating a combo box
Peter Eisengrein wrote: Hi, Sorry for my previous message. I have discovered that I was using an older version of Win32::GUI that was installed using ppm, but now after installing it from cpan.org, it works fine. Nevertheless, the problem is that the Dialog was missing the -name parameter. Indeed. Only a problem with older versions of Win32::GUI, though. Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] XS problem
Brian Casey wrote: >nmake Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. Skip blib\lib\MSC\LAPI.pm (unchanged) Running Mkbootstrap for MSC::LAPI () C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 LAPI.bs link -out:blib\arch\auto\MSC\LAPI\LAPI.dll -dll -nologo -nodefaultlib -d ebug -opt:ref,icf -libpath:"C:\Perl\lib\CORE" -machine:x86 LAPI.obj C:\Perl\ lib\CORE\perl58.lib M:\v9.2\i86_n3\lapim.lib -def:LAPI.def Creating library blib\arch\auto\MSC\LAPI\LAPI.lib and object blib\arch\auto\M SC\LAPI\LAPI.exp LAPI.obj : error LNK2001: unresolved external symbol _strcmp LINK : error LNK2001: unresolved external symbol [EMAIL PROTECTED] blib\arch\auto\MSC\LAPI\LAPI.dll : fatal error LNK1120: 2 unresolved externals NMAKE : fatal error U1077: 'link' : return code '0x460' Stop. It looks to me link you need to link with the common run-time library (msvcrt.dll). The -nodefaultlib option prevents this. You need to add msvcrt.lib to your link command. (IIRC you can just add -lmsvcrt to the 'LIBS' option in your Makefile.PL, but make sure your compiler can find it: ensure the path to your compiler's lib directory is in the LIB environment variable) Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: creating a combo box
Hi, There are 3 different types of combobox - see MSDN for details: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/comboboxes/comboboxes.asp Two of the types include the selected item in an edit control, whose default behaviour is to use home/end to move to the beginning/end of the text. The third has the behaviour you desire, but not the look that you demonstrated with you script. It would be possible to adapt either of the first two types to do what you want as well, but this is certainly not trivial, and would deviate from the standard 'user experience'. Here's a script demonstrating all three types: #!perl -w use strict; use warnings; use Win32::GUI(); my $Win = Win32::GUI::DialogBox->new( -title => "ComboBox Types", -size => [350,200], ); # Standard: Edit control + listbox $Win->AddCombobox( -name => 'Markets1', -pos => [10,10], -size => [100,100], -vscroll => 1, -tabstop => 1, ); # Drop down: Edit control + drop-down $Win->AddCombobox( -name => 'Markets2', -pos => [120,10], -size => [100,100], -vscroll => 1, -tabstop => 1, -dropdown => 1, ); # Drop down list: Static control + drop-down $Win->AddCombobox( -name => 'Markets3', -pos => [230,10], -size => [100,100], -vscroll => 1, -tabstop => 1, -dropdownlist => 1, ); my @markets = ('Regular', 'Odd lot', 'Deal', 'BER regular', 'Oferte publice', 'Drepturi de preferinta'); $Win->Markets1->Add(@markets); $Win->Markets2->Add(@markets); $Win->Markets3->Add(@markets); $Win->Show(); Win32::GUI::Dialog(); exit(0); __END__ Regards, Rob. Octavian Rasnita wrote: Hi, I have created a combo box using the code below, but I cannot move the cursor to select the first or the last element from the combo box using the home and end keys. What can I do to be able to do this? Thank you. $Win->AddCombobox( -name => 'Markets', -left => 60, -top => 10, -width => 120, -height => 22, -tabstop => 1, ); my @markets = ('Regular', 'Odd lot', 'Deal', 'BER regular', 'Oferte publice', 'Drepturi de preferinta'); $Win->Markets->Add(@markets); Teddy ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: [aswin32] Re: RE: How to find the perl install directory?
Anything wrong with: #!perl -w use strict; use warnings; use Config; print $Config{prefix} . "\n"; print $Config{prefixexp} . "\n"; # fully expanded version of above (probably # the same in Win32) exit(0); __END__ Regards, Rob. [EMAIL PROTECTED] wrote: Here's a more annoying way than Peter's in the event that you dont add perl to your path (heaven knows why one of my client opted for that!) $version = $Registry-> {'LMachine/SOFTWARE/ActiveState/ActivePerl//CurrentVersion'}; $gbl_PerlPath = $Registry-> {'LMachine/SOFTWARE/ActiveState/ActivePerl/' . $version . '//'}; Wee! Here's one way: ### for $dir (split(/;/,$ENV{'PATH'})) { opendir(DIR, "$dir") || die "Can't open $dir for reading : $!\n"; while ($_ = readdir(DIR)) { print "$dir\n" if ($_ eq 'perl.exe'); } close(DIR); } -Original Message- *From:* Apurva Shukla [mailto:[EMAIL PROTECTED] *Sent:* Friday, July 08, 2005 9:56 AM *To:* perl-win32-users@listserv.ActiveState.com *Subject:* How to find the perl install directory? Hi All, I have perl installed on my system at C:\Perl. now I need to write a script which if I run on any computer gives me the directory where perl is installed. For e.g. on my system it should be $perl whereisperl.pl c:\Perl {Factually what I really want to do is: $whereisperl.bat c:\Perl } I have tried seeing enviroment variables but none of the environment variables store any informatio except the PATH which stores a link to it and that too is filled with a huge number of paths. One option could be to parse that and get the path to Perl install directory but I feel there has to be a neater way. Also another problem I have is that I want to write a bat file so parsing is a little problem i want to avoid. TIA -- Apurva Shukla - dream & dare - This message was scanned by ATX 10:49:26 AM ET - 7/8/2005 ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
ANNOUNCE: Win32::GUI v1.02
I am please to announce that v1.02 of Win32::GUI is available for download from SourceForge. Win32::GUI is a Perl extension allowing creation of native Win32 GUI applications. Project summary and download: http://sourceforge.net/projects/perl-win32-gui/ Release notes: http://sourceforge.net/project/shownotes.php?release_id=341357 Regards, Rob. ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs