Hi, I've been trying to set/change the background color of windows. As a real world example: You want to create a child window that looks like a richtext control (white background) you also want to be able to change the background of the child window to grey (to give the illusion that it's 'disabled').
I don't think this scenario is possible with the current win32-gui codeline. It seems the only way to set the background of a window is by using a class, but there is no way to change the class once a window has been created. The following comments (from line 884 GUI.xs): /* TODO: change class ??? if(perlcs.cs.iClass != NULL) SetWindowLong(handle, GWL_ */ I had a little google on the web, and I couldn't find any examples on how to change a window class (only items within the class) - perhaps it can't be done? Surely there must be an easy way to change the background color of a window? Am I missing something? The following perl code creates a (green) child window - I'm trying to change it to red:) Cheers, jez. ------------------------- use Win32::GUI; use strict; my $col=65025; my $redbrush = new Win32::GUI::Brush(-color => [255,0,0]); my $greenbrush = new Win32::GUI::Brush(-color => [0,255,0]); my $WC = new Win32::GUI::Class( -name => "redrush", -brush => $redbrush, ); my $WC2 = new Win32::GUI::Class( -name => "greenbrush", -brush => $greenbrush, ); my $win = new Win32::GUI::Window ( -pos => [100, 100], -size => [400, 400], -name => 'Window', -text => 'Main Window', # -onTimer => \&Change, ); #$win->AddTimer("Timer", 10); $win->AddButton( -name => 'button', -pos => [0, 0], -size => [50, 20], -text => 'change', -onClick => \&Change, ); my $child = new Win32::GUI::Window ( -parent => $win, -name => 'ChildWin', -pos => [100, 100], -size => [100, 100], -popstyle => WS_CAPTION | WS_SIZEBOX, -pushstyle => WS_CHILD | WS_CLIPCHILDREN, -pushexstyle => WS_EX_CLIENTEDGE, -class => $WC2, ); my $lable=$child->AddLabel( -name => 'Lab', -pos => [20, 20], -size => [50, 20], -text => 'Some text', -background => [255,0,0], ); $child->Show(); $win->Show(); Win32::GUI::Dialog(); sub Change() { $child->Change(-class => $WC); #$lable->Change(-background => $col); $child->InvalidateRect(0); #$lable->InvalidateRect(0); $col+=20; print $col; }