[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 メーリングリストの案内