Hi, A quick reply as I am not on a windows box. Have a look at the "coolbar" control on rob's home page. Its a wrapper around the rebar and should do all you need. I have a complicated rebar with toolbars, menus and child windows and for the most part it works fine.
Cheers, Jez -----Original Message----- From: "M2U Germany" <[EMAIL PROTECTED]> To: "Win32 GUI Users Mailing List" <perl-win32-gui-users@lists.sourceforge.net> Sent: 13/02/08 13:47 Subject: [perl-win32-gui-users] How to combine tool- and rebars properly? Hello everyone, I'm currently developing a rather complex application that contains a broad variety of the Win32::GUI controls, among them the toolbar control which causes problems in my case. I have coded a little sample that demonstrates the issue (the script tries to load a 16x16 px 2 bit bitmap and a 16x16 px 24 bit bitmap but it will work the same without them, so just ignore the initial warnings for now): ##### START OF SAMPLE CODE ##### #!/usr/bin/perl -w use strict; use warnings; use Win32; use Win32::GUI qw(TBSTYLE_BUTTON TBSTATE_ENABLED TBSTYLE_AUTOSIZE TBSTYLE_SEP); my $window_main = Win32::GUI::Window->new( -name => 'Window', -text => 'Code sample "toolbar problem"', -width => 640, -height => 480, -onResize => \&resizeWindowMain, -onTerminate => \&quitApplication, ); my $imagelist_buttons = new Win32::GUI::ImageList(16, 16, 0|24|1, 1, 0); $imagelist_buttons->Add('dummy.bmp', 'dummy_mask.bmp'); $window_main->AddToolbar( -imagelist => $imagelist_buttons, -name => 'Toolbar', -flat => 1, -multiline => 1, -flat => 1, ); $window_main->{'Toolbar'}->AddString('Dummy button'); $window_main->{'Toolbar'}->AddButtons( 14, 0, 1, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, 0, 0, 2, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, 0, 0, 3, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, 0, 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, 4, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, 0, 0, 5, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, 0, 0, 6, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, 0, 0, 7, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, 0, 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, 8, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, 0, 0, 9, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, 0, 0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, 10, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, 0, 0, 11, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, 0, ); $window_main->AddTreeView( -name => 'Treeview', -width => 200, ); $window_main->Center(); $window_main->Show(); Win32::GUI::Dialog(); $window_main->Hide(); exit(0); sub quitApplication { return -1; } sub resizeWindowMain { my $windowMain_height = $window_main->ScaleHeight(); my $windowMain_width = $window_main->ScaleWidth(); my $toolbar_height = $window_main->{'Toolbar'}->Height(); $window_main->{'Toolbar'}->AutoSize(); $window_main->{'Treeview'}->Change( -pos => [0, $toolbar_height], ); $window_main->{'Treeview'}->Height($windowMain_height - $toolbar_height); print $window_main->{'Toolbar'}->GetRows()." rows retrieved.\n"; } ##### END OF SAMPLE CODE ##### This sample creates a simple window with a toolbar containing a lot of dummy buttons and a treeview. I expected that the treeview control would appear just below the toolbar. But when I run this script on my machine (Active Perl 5.10.0.1001, Win32::GUI 1.05.90, Windows Vista 6.0.6000) and resize the window there appears some space between the two items that increases with the number of toolbar lines. If the window is wide enough for just one line of toolbuttons there is no space but as soon as the buttons begin to wrap due to smaller window dimensions the upper border of the treeview is placed wrong. Maybe this is a simple mistake in my resizing subroutine but I can't find any explanation for this behaviour. As a next step to achieve optimal Windows look and feel under XP / Vista I decided to use the rebar control, too. The documentation that comes with the PPM distribution has leaks on this topic and left me with a lot of questions... I found another version of the rebar help in the sourceforge documentation project but still I'm not quite sure how to deal with this control. There it said that any rebar band can only contain one single child control so you had to create a window (with "popstyle => WS_CAPTION | WS_SIZEBOX" and "-pushstyle => WS_CHILD") which contains the controls first and then assign it to a rebar band as a child. But how can I integrate my former toolbar into the band? My first thought was to assign the toolbar to the child window. It kind of worked but in my case looked really weird because I'm using a manifest file (like the one Rob posted some days ago). The rebar band uses the correct style (this bluish / glassy optic) but the child window is simply embedded and appears as an ugly gray overlay... Am I missing any required style constants here that could help? (I already tried everything like "WS_CLIP..." and "..._TRANSPARENT" without success.) Anyway I'm not sure at all if this is the right way to do it because it seems a little too complicated. I also tried to assign the toolbar directly to the rebar band. This produced the desired look but now the toolbar covered the grippers and chevrons of the band. Aaaarghh!!! I think there must be another way to combine these two controls, right? In the documentation it even says that "TBSTYLE_EX_HIDECLIPPEDBUTTONS" could be used for toolbars displayed in rebars to hide partially clipped buttons that are covered by an adjacent band and show them on the chevron's dropdown menu instead. I couldn't get that one to work either... :'-( I guess this is a lot of question marks at once :-) but I'm grateful for every little hint that could help me to get on the right track. Has anyone made any experiences with this stuff? Thanks in advance, best regards from Bonn, Germany, Matthias. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Perl-Win32-GUI-Users mailing list Perl-Win32-GUI-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users http://perl-win32-gui.sourceforge.net/ ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Perl-Win32-GUI-Users mailing list Perl-Win32-GUI-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users http://perl-win32-gui.sourceforge.net/