[Perl]Win32::GUI Tutorial 官方教学翻译 Part 4 - 高级特性

回复
头像
PerlMonk
渐入佳境
渐入佳境
帖子: 49
注册时间: 2016年09月19日 10:20
联系:

[Perl]Win32::GUI Tutorial 官方教学翻译 Part 4 - 高级特性

帖子 PerlMonk »

翻译:523066680@163.com
主页:Code-By.Org
转载请注明出处

Win32::GUI::Tutorial Part 4 - 高级特性

计时器
  • 许多应用类型需要在固定的时间间隔做指定的操作。一个常见的应用实例就是时钟,但也可能是其他应用:
    * 文件监视器,监控文件的变化,每经过一定的时间间隔就扫描一次,如果有变更就显示。
    * 每秒更新显示信息的监视器
    * 网络 ping 工具,每隔指定的时间向服务器发出 ping,来判断服务器是否正常运行。

    向应用程序添加计时器非常简单,对需要使用计时器的窗体调用 AddTimer() 方法即可。当经过指定
    间隔的时间,自动触发 Timer 事件。

    示例:
    $t1 = $main->AddTimer('T1', 1000); sub T1_Timer { print "Timer went off!\n"; }
    注意:
    • * AddTimer() 方法接受两个参数,计时器的名称,以及时间间隔(毫秒级)。与其他函数不同,不采用 option => value 的方式传递参数。
      * 计时器将反复触发 Timer 事件。使用 $timer->Interval(0) 或 $timer->Kill() 以关闭计时器。
      * 通过 $timer->Interval(n) 来修改计时器的时间间隔。将时间间隔设为 0 等同于 $timer->Kill()。
状态栏
  • 使用以下方式添加状态栏:
    $sb = $main->AddStatusBar();
    支持通用选项,但通常用不到它们。
    唯一需要注意的是状态栏的尺寸并不随着窗体大小的改变而改变,你需要在窗体 Resize 事件内做相应的处理:
    sub Main_Resize { $sb->Move(0, $main->ScaleHeight - $sb->Height); $sb->Resize($main->ScaleWidth, $sb->Height); }
    也可以通过 Text() 方法为状态栏添加文本
    $sb->Text("This appears in the status bar");
    写入空白字符串以清除状态栏内容。
系统托盘图标
  • 许多实用程序都带有“系统托盘”图标 ———— 在桌面任务栏右下角显示。Win32::GUI 中,通过 AddNotifyIcon()
    方法为程序添加系统托盘图标,其包含三个参数 - 名称、提示内容 以及 图标对象。创建图标对象:
    $icon = Win32::GUI::Icon->new("name.ico") 。 系统托盘图标支持鼠标单击事件和右击事件。

    常见的情景是当窗体最小化/隐藏时显示托盘图标,通过单击图标再次显示窗体。

    示例代码:
    use Win32::GUI(); my $main = Win32::GUI::Window->new( -name => 'Main', -text => 'Perl', -width => 200, -height => 200 ); my $icon = new Win32::GUI::Icon('GUIPERL.ICO'); my $ni = $main->AddNotifyIcon( -name => "NI", -icon => $icon, -tip => "Hello" ); Win32::GUI::Dialog(); sub Main_Terminate { return -1; } sub Main_Minimize { $main->Disable(); $main->Hide(); return 1; } sub NI_Click { $main->Enable(); $main->Show(); return 1; }
    一些要点:
    • * 要从任务栏中移除程序标签,必须禁用(disable)窗体并隐藏。当需要再次显示时,重新启用(enable)即可
      * 如果想要移除托盘图标,可通过以下方法("NI"是托盘图标对象的名称):
      $main->NI->Remove();

      在接下来的教程中,将介绍更复杂的控件 - list view 和 tree view。
译注:
  • 要点中所指的程序标签,指的是任务栏中多个不同程序的标签,而非托盘图标。
[Finished in 0.4s]
回复

在线用户

正浏览此版面之用户: 没有注册用户 和 1 访客