Re: perltray/tk intercept windows minimize function
Rob Seegel <[email protected]>
| Newsgroups | gmane.comp.lang.perl.tk |
|---|---|
| Message-ID | <[email protected]> |
listmail wrote:
>> I appreciate the response, I was able to clean up some code and
I removed the Win32Util module altogether. I've been trying to
understand the bit AND operation and how it removes the buttons.
Basically, the operation clears the bits that correspond to those
styles. Rather than going into it here at length, check out the
following link. It was the first thing to pop up in a google search, and
covers the various bitwise operators well:
http://www.eskimo.com/~scs/cclass/int/sx4ab.html
>> I was trying to remove just the minimize button, for example,
but something like $style &= ~(WS_MINIMIZEBOX); only ~greys~ out the
minimize button and does not remove it. Can you explain that piece
to me?
The bitwise portion should be explained by the link I supplied. Per
Win32 standards, you cannot get rid of only the Minimize OR Maximize
buttons -- they come as a pair. You either get rid of or display both.
The best you can hope for is to disable one or the other. You'll find
that this is true whether you use VB, C++, C#, or whatever. It may not
be precisely the look you are going for, but it does effectively prevent
the user from using the disabled button.
Now that I've gone back over some of the past emails, I have another
recommendation: so long as you are doing so many Win32-specific things,
why not simply use Win32::GUI for your application? It seems to me
(unless I'm misunderstanding) that what you're looking for is
Win32::GUI::NotifyIcon. It seems to do what you were describing.
The following snippet was taken from Win32::GUI How-to (Aldo Calpini and
Erick Bourgeois). Here one link to a copy:
http://jeb.ca/perl/win32-gui-docs/index.pl/how-to
and the slightly modified code.
use Win32::GUI;
my $mw = Win32::GUI::Window->new(
-name => 'Main',
-text => 'Perl',
-width => 200,
-height => 200
);
my $ico = "c:\\Perl\\site\\lib\\Win32\\GUI\\demos\\guiperl.ico";
my $icon = new Win32::GUI::Icon($ico);
my $ni = $main->AddNotifyIcon(
-name => "NI",
-id => 1,
-icon => $icon,
-tip => "Hello"
);
Win32::GUI::Dialog();
sub Main_Terminate { -1; }
sub Main_Minimize
{
$mw->Disable();
$mw->Hide();
1;
}
sub NI_Click
{
$mw->Enable();
$mw->Show();
1;
}
__END__
Rob
-++**==--++**==--++**==--++**==--++**==--++**==--++**==
This message was posted through the Stanford campus mailing list
server. If you wish to unsubscribe from this mailing list, send the
message body of "unsubscribe ptk" to [email protected]