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

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

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

帖子 #1 PerlMonk » 2017年06月16日 16:12

翻译: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]

回到 “模块”

在线用户

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