Hello,
I managed to solve my own problem with about 3 hours of tinkering and reading
MSDN. Although I still haven't figured out how exactly WM_Paint messages are
being generated. If I comment out the Update and the InvalidateRect method
calls, the graph line still gets drawn; which means calling Show on a window
fires a WM_Paint message. Additionally, the BeginPaint and EndPaint functions,
which I couldn't find in the documentation but did find in GUI.xs, don't seem
to do anything. They are required in Win32 C programming, so I (incorrectly?)
assumed they would be needed here as well. Finally, the Validate function has
no effect, which seems to indicate the Update function does not invalidate any
windows. So the WM_Paint message is being generated for a reason other than a
window being declared invalidated. Could someone clarify any of this? I'm
finding Win32 to be very complicated!
Anyways, since there is not alot of documentation nor example code for
Win32::GUI, I'll show my simple code just in case someone else ever
needs to learn how to do this.
Best Regards,
Rod
#!c:/Perl/bin/wperl.exe -w
use strict;
use Win32::GUI;
my $topwin = new Win32::GUI::Window(
-name => 'topwin',
-title => 'window',
-width => 800,
-height => 600,
-pos => [125,75],
-maximizebox => "0",
-minimizebox => "0",
-resizable => "0"
);
my $graph = new Win32::GUI::Graphic(
$topwin,
-left => 0,
-top => 0,
-width => $topwin->ScaleWidth,#same width as parent window
-height => $topwin->ScaleHeight,#same height as parent window
-name => "graph",
);
$topwin->Show();
$graph->Show();
#$graph->Update(); Send WM_Paint message for the graphic control window?
#GUI::InvalidateRect($topwin,1);
Win32::GUI::Dialog();
sub graph_Paint {
my $W = $graph->ScaleWidth;
my $H = $graph->ScaleHeight;
my $DC = $graph->GetDC;
#$graph->BeginPaint(); useless?
$DC->MoveTo(0,$H);
$DC->LineTo($W,0);
#$DC->Validate; useless?
#$graph->EndPaint(); useless?
return 1;
}
sub topwin_Terminate {
return -1;
}
sub ExitButton_Click {
return -1;
}
exit;
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.