[Perl]Win32::GUI 模块安装、配置以及学习方法

头像
PerlMonk
渐入佳境
渐入佳境
帖子: 51
注册时间: 2016年09月19日 10:20
拥有现金: 锁定
Has thanked: 4 times
Been thanked: 3 times
联系:

[Perl]Win32::GUI 模块安装、配置以及学习方法

帖子 #1 PerlMonk » 2017年04月22日 19:09

[Perl] Win32::GUI 模块安装、配置以及学习路线
    编辑/整理:523066680@163.com
    日期:2017-05
    我可能用了假的 Perl 环境,各种模块安装失败的经历。已改用 Strawberry Perl
相关链接模块安装
    Activeperl V5.16
      可以从 PPM 管理器 直接安装
    StrawberryPerl V5.24 Portable
      CPAN install Win32::GUI 安装失败,改从源码包安装
      执行 portableshell.bat
      进入 Win32::GUI 源码包解压目录
      perl Makefile.pl
      dmake
      dmake install

      没有明显问题(但好像缺少 DIBitmap、Grid、AxWindow 组件)
      通过 cpan install Win32::GUI::Grid 安装失败
      从 Grid 源码包目录安装提示:
      Win32::GUI::Grid can only be built using MSVC, not 'gcc',
      as it requires the MFC framework.
      Win32::GUI::Grid will be skipped during the current build process.
      先欠着吧,总不能为了环境配置花太多时间
    StrawberryPerl V5.10.2 Portable
      考虑到官网给出了针对 Perl 5.10 的 PPM 安装包 Win32-GUI-1.06-PPM-5.10.zip
      无需dmake,也就没有各种头痛的问题,所以我下载了 草莓Perl V5.10
      执行 portableshell.bat,
      进入 Win32-GUI-1.06-PPM-5.10.zip 解压目录,
      ppm install Win32-GUI.ppd
      安装完成。带有 Grid , DIBitmap, AxWindow
学习资料
    在线文档离线文档
      模块安装目录下的有着各种文档 C:\Strawberry\perl\site\lib\Win32
      这些文档可以通过 perldoc 命令直接查阅,有些是教学,有些是针对特定组件的说明
      perldoc Win32::GUI
      perldoc Win32::GUI::Tutorial
      perldoc Win32::GUI::Tutorial::Part1
      perldoc Win32::GUI::UserGuide

      组件类的文档比如:
      perldoc Win32::GUI::Button
      perldoc Win32::GUI::Preference::Options

      不过这种终端显示的文档会丢失不同文档之间的依赖链接,所以还是生成 HTML 为好。
    pod文档批量遍历生成 HTML
      Perl 自带 pod2html.bat 用于文档转换。
      这个工具探索了很久,也上网查过,就是不知道怎么递归生成所有HTML,
      最后还是写个批处理完成吧

      @echo off
      del *.tmp /s 2>nul

      for /R %%a in (*.pod) do (
      pod2html ^
      --podpath "C:\Strawberry\perl\site\lib":"C:\Strawberry\perl\lib" ^
      --podroot "C:\Strawberry\perl\site\lib\Win32" ^
      --htmldir "C:\Strawberry\perl\site\lib\Win32" ^
      --infile %%a --outfile %%~dpa%%~na.html >nul
      )
      pause

      exit /b

    运行示例程序
      C:\Strawberry\perl\site\bin\win32-gui-demos.pl
      C:\Strawberry\perl\site\lib\Win32\GUI\demos
[Finished in 0.2s]
上次由 PerlMonk 在 2017年04月27日 22:17,总共编辑 1 次。

头像
PerlMonk
渐入佳境
渐入佳境
帖子: 51
注册时间: 2016年09月19日 10:20
拥有现金: 锁定
Has thanked: 4 times
Been thanked: 3 times
联系:

示例

帖子 #2 PerlMonk » 2017年04月27日 20:39

Code: [全选] [展开/收缩] [Download] (untitle.pl)
  1. use Win32::GUI();
  2. # 创建窗口
  3. my $main = Win32::GUI::Window->new(
  4.                 -name   => 'Main',
  5.                 -width  => 100,
  6.                 -height => 100,
  7.             );
  8.  
  9. # 在窗口中添加 label(就是文本),默认为与左上方
  10. $main->AddLabel( -text => "Hello, world" );
  11.  
  12. # 展现窗口
  13. $main->Show();
  14.  
  15. # 进入 dialog 事件循环
  16. Win32::GUI::Dialog();
  17.  
  18. # 事件循环结束后,退出脚本
  19. exit(0);
  20.  
  21. # 结束 'Main'窗口的事件循环,返回 -1,并将控制权返还给 perl
  22. sub Main_Terminate { return -1 }


t1.png
t1.png (1.53 KiB) 查看 344 次
t1.png
t1.png (1.53 KiB) 查看 344 次


这里 exit(0) 可以去掉
但 Main_Terminate { return -1 } 应保留,否则关闭窗口后无法结束循环、返回控制权

头像
vicyang
版主
版主
帖子: 47
注册时间: 2016年07月21日 20:35
拥有现金: 锁定
储蓄: 锁定
Has thanked: 7 times
联系:

[Perl]Win32::GUI 示例 - Label 控件显示中文

帖子 #3 vicyang » 2017年05月24日 11:29

脚本保存为 utf8 编码格式

Code: [全选] [展开/收缩] [Download] (Untitled.pl)
  1. use utf8;
  2. use Encode;
  3. use Win32::GUI();
  4.  
  5. $text = encode('gbk', "文本测试");
  6.  
  7. $main = Win32::GUI::Window->new(
  8.             -name => 'Main',
  9.             -text => 'Perl',
  10.             -size => [200, 100],
  11.     );
  12. $font = Win32::GUI::Font->new(
  13.             -name => encode('gbk', "微软雅黑"),
  14.             -size => 24,
  15.     );
  16. $label = $main->AddLabel(
  17.             -text => $text,
  18.             -font => $font,
  19.             -foreground => [255, 0, 0],
  20.     );
  21.  
  22. $main->Show();
  23.  
  24. Win32::GUI::Dialog();
  25.  
  26. sub Main_Terminate {
  27.     -1;
  28. }


回到 “模块”

在线用户

用户浏览此论坛: 没有注册用户 和 1 访客