Chinaunix首页 | 论坛 | 博客
  • 博客访问: 221143
  • 博文数量: 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-04-05 10:56:52

    宣传一下Wx,其实perl的Wx挺成熟的(为了学Wx最近找了本wxwidgets的书来学,学习后对比给我的感觉),窗口、控件、框架、多线程、wxSocket、剪贴板支持、文档及系统路径处理也有相应模块支持,Wx::HtmlWindow这个模块就更有用了,支持简单的html标签,用于格式化输出很有用,之前曾看到Padre就是用Wxperl开发的。但是就是缺系统的学习资料,但入了门后也不难,而且CPAN上有些模块(一般命名为Wx::Perl::***或wxPerl::**)能让代码更简洁,开发更快速,使用cava packager也很简单就可以转为exe执行程序(另外用pp及wxpar也可以打包Wx代码,为了方便这两个工具打包还有个支持模块Wx::Perl::Packager),最近我就将几个工作常用的代码转为了Wxperl图形界面的exe程序,整体感觉挺好的。
    下边这个工具的输出内容的格式就是使用了Wx::HtmlWindow模块。
    先创建Wx::Frame、Wx::Panel与Wx::Notebook对象,然后如下使用(就是这么简单):
  1. $self->{page1} = Wx::HtmlWindow->new( $notebook, -1, wxDefaultPosition );
  2.     $self->{page1}->SetPage(<<EOT);
  3. <html>
  4. <body>
  5.   <pre>
  6. <h5>About</h5>
  7. ########################################################
  8. ##Name: RegExp Tool
  9. ##Version: 1.01
  10. ##Author: LaiTao(aef25u)
  11. ##Created: 4/4/2011
  12. ##Copyright: (c) 2011 LaiTao(aef25u)
  13. ##QQ: 215113227 Email: laitaot\@163.com
  14. ##Licence: 版权所有,作者保留追究侵权赔偿责任!
  15. ########################################################
  16. <h5>正则替换</h5>
  17. <b>Usage: </b>replace('String',qr/Pattern/,sub{"Re_Pattern"},g)</br>
  18.          如:ben@forta.com=~s/(\w+[\w\.]*@[\w\.]+\.\w+)/&lt;A\$1&gt;\$1&lt;/A&gt;/g</br>
  19.          在“正则匹配模式”输入:replace('ben@forta.com',qr/(\w+[\w\.]*@[\w\.]+\.\w+)/,sub{"<A\$1>\$1</A>"},g)</br>
  20.   </pre>
  21. </body>
  22. </html>
  23. EOT
注:要使Wx::HtmlWindow显示 符号<>,在内改写为<>
    2011年4月9日,给这个工具加入了注册机制,注册机制是用perl的bless实现的oop写的一个package Cecklicense,实现了一个序列号最多只能在3台电脑上运行1年,这个就不发出来了,只发一下与注册窗口相关代码。如果有看我在CU论坛上发的《》,那下边这个代码的结构应该很容易看懂,只要再加些论坛上的部分代码,应该都能将代码补充完整。
注册窗口代码:
  1. use Wx::Perl::Dialog;
  2. package MyFrame;
  3. ...
  4. sub new {
  5. ...
  6. #检查为非有效用户时,弹出窗口供注册,返回值$reg为'Wx::TextCtrl'的输入内容
  7. my $reg= $self->ShowRegister($lic_ID);
  8. ...
  9. }
  10. ### PUT SUBROUTINES HERE ###
  11. sub ShowRegister {
  12.     my ( $self, $lic_ID ) = @_;
  13.     my $layout = [
  14.         [
  15.             [ 'Wx::StaticText', undef, "ID:", ],
  16.             [
  17.                 'Wx::StaticText', undef, "$lic_ID,请向作者提供此ID号购买SN-KEY",
  18.             ]
  19.         ],
  20.         [
  21.             [ 'Wx::StaticText', undef, '请输入序列号SN-KEY:' ],
  22.             [ 'Wx::TextCtrl', 'LICKEY', "$lic_ID" ],
  23.         ],
  24.         [
  25.             [ 'Wx::Button', 'Ok', Wx::wxID_OK ],
  26.             [ 'Wx::Button', 'Cancel', Wx::wxID_CANCEL ],
  27.         ],
  28.     ];

  29.     my $dialog = Wx::Perl::Dialog->new(
  30.         parent => $self,
  31.         title => 'Register dialog',
  32.         layout => $layout,
  33.         width => [ 150, 400 ],
  34.     );

  35.     return if not $dialog->show_modal;
  36.     my $data = $dialog->get_data;

  37.     $self->{LICKEY} = $data->{LICKEY};
  38.     return $self->{LICKEY};
  39. }
注册窗口图示:
 
阅读(2482) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~