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