[Tokyo.pm] perl 窓の切り抜き

matsumotoya matsumotoya @ om.jalinfotec.co.jp
1999年 9月 6日 (月) 10:01:43 CDT


松本です。

やっと窓の切り抜きができました。リージョンデータは、
「ぺたぺた」が作ってくれるものを使います。
引き数の内容に問題がありました。
以下のような内容です。

----------- ここから -----------------
use Tk;
use Win32::GUI;
use Win32::API;

$SetWindowRgn    = new Win32::API("user32","SetWindowRgn",[N,N,I],N);
$ExtCreateRegion = new Win32::API("gdi32" ,"ExtCreateRegion",[P,N,P],N);

$mw = new MainWindow;
$mw->title("sakura");
$mw->after(200,\&start);

MainLoop;

sub start{
   $desktop = GUI::GetDesktopWindow();
   $window = GUI::GetWindow($desktop,GW_CHILD);
   while($window){
      $title = GUI::Text($window);
      last if ($title eq "sakura");
      $window = GUI::GetWindow($window,GW_HWNDNEXT);
  }
   open (INPUT,"sakura.rgn");
   read (INPUT,$Header,32);
   ($dwSize,$iType,$nCount,$nRgnSize,$X1,$Y1,$X2,$Y2) =
unpack("L8",$Header);
   read(INPUT,$data,$nCount*16);
   #
   # ↓これが魔法の呪文
   #
   $XForm = pack("C24",0,0,128,63,0,0,0,0,
0,0,0,0,0,0,128,63,0,0,0,0,0,0,0,0);

   $datas  = join('',$Header,$data);

   $hRGN = $ExtCreateRegion->Call($XForm,$nRgnSize+$dwSize,$datas);
   $tmp = $SetWindowRgn->Call($window,$hRGN,1);
}



Tokyo-pm メーリングリストの案内