川合孝典です。
先日、CPANをフラフラしていたところ、
wxWindowsというGUIツールキットのためのPerlインターフェース:
Wxというモジュールを見つけました。
そこでwxPerlプロジェクトのホームページにいって、
Windows版(ActivePerl用)をダウンロード、インストールしたところ
あっけないくらい簡単に動かすことができました。
しかも日本語の表示もとりあえず問題なく(下記のスクリプト)。
だからどうということもないのですが、WxWindowsというもの自体、
私は聞いたことがなかったものですから。
どれくらい使われて、今後はどうなんでしょうか?
Wx::WidgetMakerのドキュメントを今、読み始めたんですが、
需要があるかなぁというのが、ちょっと心配で(^^)。
wxPerl
http://wxperl.sourceforge.net/
ダウンロードはこちらから
http://sourceforge.net/project/showfiles.php?group_id=15655
0.12b2でテストしました(Wx-0.12b2-wxm2.3.3-win32.zip)
[環境]
ActivePerl Build633 + Wx : 0.12
[スクリプト例]
#!/usr/bin/perl
use strict;
use Wx;
#-----------------------------------------------------------------------
# MyAPP(Wx::App)
#-----------------------------------------------------------------------
package MyApp;
use vars qw(@ISA);
@ISA = qw(Wx::App);
#---------------------------------------------------------------------
# OnInit:オブジェクトが生成されたときに自動的に呼び出されます
#---------------------------------------------------------------------
sub OnInit {
my( $this ) = shift;
# 新しいフレームを生成し、トップに設定し、表示
my $frame = MyFrame->new();
$this->SetTopWindow( $frame );
$frame->Show( 1 );
}
#=====================================================================
# MyFrame(Wx::Frame)
#=====================================================================
package MyFrame;
use vars qw(@ISA);
@ISA = qw(Wx::Frame);
# 必要なイベントのインポート
use Wx::Event qw(EVT_PAINT);
# 必要な定数のインポート
use Wx qw(wxDECORATIVE wxNORMAL wxBOLD);
use Wx qw(wxDefaultPosition);
use Wx qw(wxWHITE wxRED);
#---------------------------------------------------------------------
# new
#---------------------------------------------------------------------
sub new {
# 新しいframe 親なし、ID -1, タイトル 'Perlでテスト'
# デフォルト位置、幅350、高さ100
my $this = shift->SUPER::new( undef, -1, 'Perlでテスト',
wxDefaultPosition , [350, 100] );
# 新しいFontオブジェクトを生成し、格納
$this->{FONT} = Wx::Font->new(16, wxDECORATIVE, wxNORMAL, wxBOLD, 0);
# 背景色の設定
$this->SetBackgroundColour( wxRED );
$this->SetIcon( Wx::GetWxPerlIcon() );
# 全てのPAINTイベントをOnPaintメソッドで扱うように宣言
EVT_PAINT( $this, \&OnPaint );
return $this;
}
#---------------------------------------------------------------------
# PAINTイベント
#---------------------------------------------------------------------
sub OnPaint {
my( $this, $event ) = @_;
# 描画用の新しいDC(デバイスコンテキスト)を作成
my $dc = Wx::PaintDC->new( $this );
# フォントを選択し、テキストの描画
$dc->SetFont( $this->{FONT} );
$dc->DrawText( 'びっくり!日本語DE表示?', 10, 10 );
}
#=====================================================================
# メイン
#=====================================================================
package main;
# Wx::Appの派生クラスを作成
my $app = MyApp->new();
# イベントの処理を開始
$app->MainLoop();
===================================================
川合 孝典 (Hippo2000)
DBI日本語メーリングリスト管理人、Kansai.pm所属
kwitknr@... GCD00051@...
http://member.nifty.ne.jp/hippo2000、http://www.hippo2000.info/
「Cマガジン」でPerl DBIの連載はじまります。
http://www.cmagazine.jp/
===================================================