[Tokyo.pm] 続:Tk のhwnd を取得する方法
matsumotoya
matsumotoya @ om.jalinfotec.co.jp
1999年 7月 23日 (金) 09:40:54 CDT
松本です。
不完全ですが、不定形リージョンをだすことができました。
Win32::API をつかうと #use strict にしておかないと
[N,....N] の定義のところで怒られてしまいますが
なんとかなりませんかね。
------------------ ここから -----------------------
use Tk;
use Win32::GUI;
use Win32::API;
#use strict;
#no strict 'refs';
$APISetWindowPos = new
Win32::API("user32","SetWindowPos",[N,N,N,N,N,N,N],N);
$APICreateEllipticRgn = new Win32::API("gdi32"
,"CreateEllipticRgn",[N,N,N,N],N);
$APISetWindowRgn = new
Win32::API("user32","SetWindowRgn",[N,N,I],N);
my ($mw);
$mw = new MainWindow;
$mw->title("neko");
$mw->after(200,\&start);
MainLoop;
sub start
{
my ($desktop,$window,$title,$rgn);
my $ret;
$desktop = GUI::GetDesktopWindow();
print "Desktop Window: $desktop\n";
$window = GUI::GetWindow($desktop, GW_CHILD);
while($window) {
$title = GUI::Text($window);
if ($title eq "neko"){
printf("%16d: %s\n", $window, $title);
$ret = $APISetWindowPos->Call($window,-1,0,0,0,0,3);
$rgn = $APICreateEllipticRgn->Call(0,0,100,100);
$ret = $APISetWindowRgn->Call($window,$rgn,0);
}
$window = GUI::GetWindow($window, GW_HWNDNEXT);
}
}
Tokyo-pm メーリングリストの案内