Chinaunix首页 | 论坛 | 博客
  • 博客访问: 221074
  • 博文数量: 36
  • 博客积分: 1188
  • 博客等级: 军士长
  • 技术积分: 802
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-08 21:45
文章分类

全部博文(36)

文章存档

2020年(1)

2017年(2)

2015年(1)

2014年(1)

2013年(1)

2012年(3)

2011年(27)

分类: WINDOWS

2011-03-28 21:55:32

    use  wxPerl::Constructors后,wxPerl::Constructors::doc(Cpan上的文档)列表中的控件通过新的使用规则可以省略一个个模块的导入,使用参数的定义。主要可省略以下代码:

  1. use base qw(Wx::Frame Wx::Panel Wx::**);
  2. use Wx qw( wxDefaultPosition wxDefaultSize wxID_EXIT wxTOP wxGROW ...);
  3. use Wx::Event qw(EVT_MENU EVT_BUTTON  ...);

使用规则:

  1. 使用模块时:s/Wx::([^-]*-)/wxPerl::$1-/g。如Wx::Frame改写为wxPerl::Frame
  2. 使用参数时:“原参数”加前缀&Wx::。如wxDefaultSize改写为&Wx::wxDefaultSize
  3. 使用Wx::Event时:“Event”加前缀Wx::Event::。如EVT_BUTTON改写为Wx::Event::EVT_BUTTON。

示例:使用wxPerl::Constructors

  1. use Wx;
  2. use wxPerl::Constructors;

  3. package MyApp;
  4. use base 'Wx::App';

  5. sub OnInit {
  6.   my $self = shift;

  7.    #s/Wx::([^-]*-)/wxPerl::$1-/g如Wx::Framer替换写为wxPerl::Frame
  8.    my $frame = wxPerl::Frame->new(undef, 'A wxPerl Application');
  9.    $frame->SetMinSize([120,80]);

  10.    #参数wxDefaultSize替换加前缀&Wx::
  11.     my $panel = wxPerl::Panel->new( $frame, -1,&Wx::wxDefaultSize);
  12.     my $button =wxPerl::Button->new( $panel,'Click me!');

  13.    #使用wxPerl::Constructors后的,用SetSize改变控件大小。
  14.     $button->SetSize([60,25]);

  15.    #Event替换加前缀Wx::Event::
  16.     Wx::Event::EVT_BUTTON( $button, -1, \&ShowDialog );

  17.    $frame->Show;
  18. }

  19.  MyApp->new->MainLoop;


  20. ### PUT SUBROUTINES HERE ###
  21. sub ShowDialog {
  22.     my ( $self, $event ) = @_;
  23.     Wx::MessageBox(
  24.         "This is a dialog",
  25.         "Wx::MessageBox example",
  26.         wxOK | wxCENTRE, $self
  27.     );
  28. }

未使用wxPerl::Constructors时:

  1. use Wx;

  2. package MyFrame;
  3. use base qw(Wx::Frame Wx::Panel);
  4. use Wx qw( wxDefaultPosition wxDefaultSize);
  5. use Wx::Event qw(EVT_BUTTON );

  6. sub new {
  7.     my $ref = shift;
  8.     my $self = $ref->SUPER::new(undef,-1, 'A wxPerl Application',wxDefaultPosition);
  9.     
  10.     my $panel = Wx::Panel->new( $self, -1, wxDefaultPosition, wxDefaultSize);
  11.     my $button =
  12.       Wx::Button->new( $panel, -1, 'Click me!', wxDefaultPosition, [60,25]);
  13.     EVT_BUTTON( $button, -1, \&ShowDialog );
  14.     
  15.     return $self;
  16. }

  17. ### PUT SUBROUTINES HERE ###
  18. sub ShowDialog {
  19.     my ( $self, $event ) = @_;
  20.     Wx::MessageBox(
  21.         "This is a dialog",
  22.         "Wx::MessageBox example",
  23.         wxOK | wxCENTRE, $self
  24.     );
  25. }

  26. package MyApp;
  27. use base 'Wx::App';

  28. sub OnInit {
  29.     my $self = shift;
  30.     my $frame = MyFrame->new;
  31.     $frame->SetMinSize([120,80]);
  32.     $frame->Show;
  33.     return 1;
  34. }

  35. package main;

  36. MyApp->new->MainLoop;
阅读(2260) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

kingwmj2011-03-30 08:49:32

希望你能多写一些modern perl。让我们多学习一下。