在Authorware中实现自定义标题栏

  • 来源: 互联网 作者: 若水   2008-03-21/17:32
  • 在用Authorware制作多媒体作品时,我们希望展示窗口和普通窗口一样可以最小化、关闭、拖动。要实现这一目的,最简单的方法是在设置文件属性时,保留Title Bar,但这样会影响作品的美观。如何制作自己的标题栏,使之和整个作品搭配协调,并且可以实现标题栏的功能呢?

    下面让我们来做一个类似“金山毒霸2002”的窗口(如图1)。将“金山毒霸2002”的窗口截取下来,用Photoshop修改成你满意的样子,保存作为作品的背景。再制作最小化和关闭的按钮图形以备用。


    图1 类似“金山毒霸2002”的窗口


    新建文件


    在Authorware中新建一个文件。单击“Modify”菜单,选择“File —Properties…”单击。在弹出的“文件属性”对话框中选择“Playback”标签,将“Size”项设定为“Variable”(可变的),取消“Title Bar”(标题栏)和“Menu Bar”(菜单栏)的复选。


    窗口设置


    拖一个“显示”图标到流程线上,命名为“背景”。将制作好的背景图片导入。

    拖一个“计算”图标到流程线上,命名为“重设窗口大小”,双击,在其中输入程序:

    ResizeWindow(593, 406)

    MoveWindow(100, 100)

    第一句的作用是将窗口大小设置成合适大小(以背景图片的大小为准)。第二句的作用是将窗口移动到屏幕的合适位置。


    最小化及关闭功能


    在流程线上放置一个“交互”图标,命名为“窗口控制”。在其右侧放置两个“计算”图标,响应类型都设为“Button”(按钮响应),分别命名为“最小化”、“关闭”。在它们的分支属性对话框中“Scope”(响应范围)项复选“Perpetual”(永久),“Branch”(分支)项选择“Return”(返回)。编辑这两个响应的按钮样式,用制作好的图片代替默认的样式并调整其位置。

    在“最小化”图标中输入程序:

    ShowWindowAsync(WindowHandle, 6)

    这里调用Windows API函数ShowWindowAsync实现将窗口最小化。保存时,系统会弹出对话框,提示选择此函数的来源,选择Winapi.u32。

    在“关闭”图标中输入程序:

    quit(0)

    作用是退出本程序。


    窗口移动功能


    在这里我们要实现当用户拖动自定义标题栏时,窗口随之移动的功能。

    在交互图标“窗口控制”右侧放置一个“组群”图标,响应类型为“Hot Spot”(热区响应),命名为“移动窗口”,在分支属性对话框中“Scope”(响应范围)项复选“Perpetual”(永久),“Branch”(分支)项选择“Return”(返回)。设定其响应范围包围背景的上部分,这就是我们的标题栏范围(如图2)。


    图2 这就是我们的标题栏

    双击“移动窗口”图标,在其中放置一个“交互”图标,命名为“move window”。在此交互图标右侧放置两个“计算”图标,响应类型都为“Conditional”(条件响应),响应条件分别为MouseDown和~MouseDown。设置MouseDown图标分支的属性,“Automatic”为“When True”,“Branch”为“Try Again”。设置~ MouseDown图标分支的属性,“Automatic”为“When True”,“Branch”为“Exit Interaction”。

    在MouseDown图标中输入程序:

    ReleaseCapture()

    SendMessage( WindowHandle, 161, 2, 0)

    这里同样是调用Windows API函数实现窗口可拖动的功能。当系统提示选择这两个函数的来源时,选择Winapi.u32。

    ~MouseDown图标内容为空。

    整个程序就完成了,最后的流程如图3。

    我们看一下最后的效果。单击“最小化”按钮可将窗口最小化到任务栏,在任务栏上单击可恢复;单击“关闭”按钮可退出本程序;拖动自定义的标题栏可移动窗口的位置。达到了预期的效果。


    图3 这个程序的流程图

    以上程序在Windows 98 SE、Authorware 6.0环境下通过。

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多