Hi, I'm doing a graphical inside a window, but when I move the window out the
borders or when I put another window over the first, the image is cutted.
I attach the module and I am sure that there is an easy solution.
Thanks,
package Mailtool::calculc;
use Mailtool::msg;
use Mailtool::accesweb;
use Mailtool::seleccio;
use Win32::GUI;
use Mailtool::loginUOC;
# =====================
# FINESTRES
# =====================
$w_calculcon = Win32::GUI::Window->new (
-top => 0,
-left => 0,
-maxsize => [800,600],
-width => 800,
-height => 600,
-text => "Resultats Tutor",
-name => "Mailtool::calculcon::e_w_calculcon",);
# =====================
# FONTS
# =====================
$fo_normal = Win32::GUI::Font->new (
-size => 16,
-bold => 0,);
$fo_negreta = Win32::GUI::Font->new (
-size => 16,
-bold => 1,);
$fo_cursiva = Win32::GUI::Font->new (
-size => 14,
-bold => 1,
-italic => 1,);
$fo_petita = Win32::GUI::Font->new (
-size => 11,
-bold => 0,);
# ===================
# PENS
# ===================
my $verd = new Win32::GUI::Pen(
-color => 65280
);
my $blau = new Win32::GUI::Pen(
-color => 16711680
);
my $groc = new Win32::GUI::Pen(
-color => 0x0000FF
);
# =====================
# CRIDES EXTERNES
# =====================
# -------------------------------------
sub prepara {
# -------------------------------------
$w_calculcon->Show();
# $Screen = new Win32::GUI::DC("DISPLAY");
$Screen = $w_calculcon->GetDC;
}
# -------------------------------------
sub visualitza {
# -------------------------------------
$refdata = shift(@_);
$nbusties=shift(@_);
$posinimin =shift(@_);
$datamin=shift(@_);
$posinimax =shift(@_);
$datamax=shift(@_);
$refbusties = shift(@_);
$infotex = shift(@_);
##### crida: Mailtool::calculc::visualitza([EMAIL
PROTECTED],$busties,$posinimin,$posinimax,$refbusties);
$diesfinestra=7;
$Screen->Rectangle(50,50, 700,570);
$alcadamax=0;
$ii = $posinimin;
while ($ii+$diesfinestra-1<=$posinimax)
{
for $jj (0..$nbusties-1)
{
$info[$jj][$ii-$posinimin]=0;
for $kk (0..$diesfinestra-1)
{
if (exists ($refdata->[$jj][$ii+$kk]))
{
$info[$jj][$ii-$posinimin]=$info[$jj][$ii-$posinimin]+$refdata->[$jj][$ii+$kk];
}
}
if ($info[$jj][$ii-$posinimin]>$alcadamax)
{
$alcadamax=$info[$jj][$ii-$posinimin];
}
}
$ii++;
}
$Screen->TextOut(35,25,$infotex);
$Screen->TextOut(5,42,$alcadamax); # el -8 es pel tamany de la font que es 16
$Screen->TextOut(5,302,$alcadamax/2);
$Screen->TextOut(5,562,0);
$Screen->TextOut(30,580,$datamin.'+ 0..6');
$Screen->TextOut(670,580,$datamax.'+ 0..6');
$espai=648/($ii-$posinimin-1);
for $ll (0..$nbusties-1)
{
$ypos[$ll]=570;
if ($ll==0)
{
$Screen->SelectObject($blau);
}
if ($ll==1)
{
$Screen->SelectObject($verd);
}
if ($ll==2)
{
$Screen->SelectObject($groc);
}
$Screen->MoveTo(705,80+$ll*60);
$Screen->LineTo(780,80+$ll*60);
$Screen->SelectObject($fo_petita);
$Screen->TextOut(705,80+$ll*60+10,$refbusties->[$ll]->{Nom});
}
for $i (0..$ii-$posinimin-1)
{
$xpos = 50 +$espai*$i;
for $ll (0..$nbusties-1)
{
if ($ll==0)
{
$Screen->SelectObject($blau);
}
if ($ll==1)
{
$Screen->SelectObject($verd);
}
if ($ll==2)
{
$Screen->SelectObject($groc);
}
$yposvell[$ll]=$ypos[$ll];
$ypos[$ll]=569-520*$info[$ll][$i]/$alcadamax;
print " y: $ypos[$ll] \n";
if ($i>0)
{
$Screen->MoveTo($xpos-$espai,$yposvell[$ll]);
$Screen->LineTo($xpos,$ypos[$ll]);
}
}
}
Win32::GUI::Dialog();
}
#sub w_calculcon_Resize {
# print "holllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaa \n";
#
visualitza($refdata,$nbusties,$posinimin,$datamin,$posinimax,$datamax,$refbusties,$infotex);
#}
1;