Thanks again Rob.  It's nice being on a list where people actually help, and
not blast you for asking questions!!!

I've attached a modified version (and I remembered to attach it this time :)
that adds the titlebar when the mouse is over the window, and removes it 10
seconds after the mouse leaves the window.

Brian Millham
This message traveled at least 44,000 miles to reach you!
Creator of the DW6000 Monitor
http://www.millham.net/dw6000
[EMAIL PROTECTED] 

-----Original Message-----
From: Robert May [mailto:[EMAIL PROTECTED] 
Sent: Thursday, February 02, 2006 5:26 PM
To: Brian Millham
Cc: perl-win32-gui-users@lists.sourceforge.net
Subject: Re: [win32gui] [perl-win32-gui-users] Hiding/showing the title bar
on a window

Stealing the solution from:
http://www.codeguru.com/forum/showthread.php?t=352963

I made it happen the other way round so that I still had a close button 
that I could use - but you'll get the idea.

Regards,
Rob.

#!perl -w
use strict;
use warnings;

use Win32::API;
use Win32::GUI();

my $SetWindowPos = Win32::API->new("user32","SetWindowPos", "LLLLLLL", "L")
        or die "Failed to load SetWindowPos";

sub TME_HOVER() {1}
sub TME_LEAVE() {2}
sub HOVER_DEFAULT()  {0xFFFFFFFF}

sub SWP_FRAMECHANGED() {32}
sub SWP_NOMOVE()       {2}
sub SWP_NOSIZE()       {1}
sub SWP_NOZORDER()     {4}
sub SWP_NOACTIVATE()   {16}

my $state = 0; # 0 - out; 1 - in;

my $mw = Win32::GUI::Window->new(
        -title => "Vanishing Title Bar",
        -pos => [100,100],
        -size => [400,300],
        -onMouseOver => sub {print "Hover\n"; return 0;},
        -onMouseOut  => \&Out,
        -onMouseMove => \&Move,
);

$mw->Show();
Win32::GUI::Dialog();
exit(0);

sub Out
{
     print "Out\n";
     $mw->Change(-pushstyle => WS_CAPTION),
     $SetWindowPos->Call($mw->{-handle}, 0, 0, 0, 0, 0,
       SWP_FRAMECHANGED|SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
     $state = 0;
     return 0;
}

sub Move
{
        return unless $state == 0;
        $mw->Change(-popstyle => WS_CAPTION),
        $SetWindowPos->Call($mw->{-handle}, 0, 0, 0, 0, 0,
         
SWP_FRAMECHANGED|SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
        print "In\n";
        $state = 1;
        $mw->TrackMouse(1000,TME_HOVER|TME_LEAVE);
        return 1;
}
__END__

Brian Millham wrote:
> I forgot to attach the code. (I always seem to do that :-)
> 
> Brian Millham
> This message traveled at least 44,000 miles to reach you!
> Creator of the DW6000 Monitor
> http://www.millham.net/dw6000
> [EMAIL PROTECTED] 
> 
> -----Original Message-----
> From: Brian Millham [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, February 01, 2006 7:04 PM
> To: '[EMAIL PROTECTED]'
> Subject: Hiding/showing the title bar on a window
> 
> Hi all,
> I'm playing with creating a normal window that only shows the titlebar
when
> the mouse is over the window. (The code is based on hover code that Rob
sent
> yesterday)
> 
> The titlebar seems to be removed logically, but not on the screen.  If you
> move the mouse over the window, and then back out, the titlebar buttons
> (minimize, maximize and close) no longer work.  If you resize the window,
> the titlebar disappears.  It does not appear when the mouse is over the
> window.
> 
> I've tried using InvalidateRect(1) to force a redraw of the window, but
this
> doesn't work.
> 
> Any ideas, or am I trying to take a simple approach to a more complicated
> problem.
> 
> Brian Millham
> This message traveled at least 44,000 miles to reach you!
> Creator of the DW6000 Monitor
> http://www.millham.net/dw6000
> [EMAIL PROTECTED] 
> 
> ---
> avast! Antivirus: Outbound message clean.
> Virus Database (VPS): 0605-4, 02/01/2006
> Tested on: 2/1/2006 7:04:09 PM
> avast! is copyright (c) 2000-2003 ALWIL Software.
> http://www.avast.com
> 
> 
> 
> ---
> avast! Antivirus: Outbound message clean.
> Virus Database (VPS): 0605-4, 02/01/2006
> Tested on: 2/1/2006 7:34:55 PM
> avast! is copyright (c) 2000-2003 ALWIL Software.
> http://www.avast.com
> 
> 
> 
>   
---
avast! Antivirus: Inbound message clean.
Virus Database (VPS): 0605-4, 02/01/2006
Tested on: 2/2/2006 5:33:23 PM
avast! is copyright (c) 2000-2003 ALWIL Software.
http://www.avast.com



---
avast! Antivirus: Outbound message clean.
Virus Database (VPS): 0605-4, 02/01/2006
Tested on: 2/2/2006 7:39:16 PM
avast! is copyright (c) 2000-2003 ALWIL Software.
http://www.avast.com



  

Attachment: hover.pl
Description: Binary data

Reply via email to