嘘~ 小破站正在拼命加载中 . . .

【PB案例学习笔记】-11动画显示窗口


写在前面

这是PB案例学习笔记系列文章的第11篇,该系列文章适合具有一定PB基础的读者。

通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。

文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git

gitee代码仓库

需要源代码的小伙伴们可以自行下载查看,后续文章涉及到的案例代码也都会提交到这个仓库【**pb-project-example**】

如果对小伙伴有所帮助,希望能给一个小星星⭐支持一下小凡。

一、小目标

本篇文章,我们要实现通过user32动态库的AnimateWindow 函数实现窗口的动画效果。

Randomize 函数实现动画效果的随机控制。最终效果如下

动画视窗

二、AnimateWindow 函数简介

① 语法

function boolean AnimateWindow ( long hwnd, long dwtime, long dwflags ) library "user32" 

② 参数说明

hWnd:

  • 类型:HWND
  • 描述:指向要进行动画效果的窗口的句柄。获取窗口句柄可能需要通过特定的函数或属性,比如对于顶级窗口,可以使用Open事件的Parent参数或者窗口对象的句柄属性。

dwTime:

  • 类型:DWORD
  • 描述:动画持续的时间,单位为毫秒。例如,500表示动画持续半秒。

dwFlags:

  • 类型:DWORD
  • 描述:指定动画类型和方向的标志。可以是以下值的组合:
    • AW_HOR_POSITIVE(水平从左到右)
    • AW_HOR_NEGATIVE(水平从右到左)
    • AW_VER_POSITIVE(垂直从上到下)
    • AW_VER_NEGATIVE(垂直从下到上)
    • AW_CENTER(窗口从中心扩大或缩小)
    • AW_HIDE(隐藏窗口,缺省则显示窗口)
    • AW_ACTIVATE(激活窗口)
    • AW_SLIDE(滑动效果)
    • AW_BLEND(淡入淡出效果,需要Windows 2000或更高版本)

三、创建程序基本框架

① 新建工作区

② 新建exampleapp应用

③ 新建w_main 窗口。Title 设置为动画视窗

以上步骤如果忘记了的小伙伴可以翻一翻第一篇文章

④ 往窗口中添加控件

w_main窗口中添加一个按钮控件cb_1,调整位置,将Text属性设置成开启动画视窗

开启视窗按钮

⑤ 新建w_animate 窗口

将窗口Title 设置为动画窗口,并将其Center属性设置为False

新建`w_animate` 窗口

⑥ 往w_animate 窗口 中添加控件

w_animate 窗口中添加一个MultiLineEdit控件和一个CommandButton控件,分别命名为mle_1cb_2

mle_1Text值设置为:这是一个动态视窗,通过这个窗口演示动态窗口效果,将cb_2Text值设置为关闭

添加控件

⑦ 保存窗口

四、编写代码

① 在w_main窗口中的cb_1按钮的Clicked事件中添加如下代码

open(w_animate)

② 在w_animate窗口的Declare Instance Variables 选项卡中添加如下实例变量

constant long AW_HOR_POSITIVE = 1 
constant long AW_HOR_NEGATIVE = 2 
constant long AW_VER_POSITIVE = 4 
constant long AW_VER_NEGATIVE = 8 
constant long AW_CENTER = 16 
constant long AW_HIDE = 65526 
constant long AW_ACTIVATE  = 131072 
constant long AW_SLIDE = 262144 
constant long AW_BLEND = 524288 

③ 在本地外部扩展函数(Local External Functions) 选项中添加如下代码

function boolean AnimateWindow ( long hwnd, long dwtime, long dwflags ) library "user32" 

④ 在w_animate窗口的open事件中添加如下代码

long ll_handle  
//获取当前窗口的句柄
ll_handle = Handle ( This ) 
//初始化随机数种子,确保每次运行都有不同的动画效果
Randomize ( 0 ) 
// 根据随机数选择不同的动画效果
Choose Case rand ( 6 ) 
    Case 1 
          // 淡入并从底部向上滑动窗口
        // AW_SLIDE启用滑动效果
        // AW_VER_POSITIVE表示垂直方向从下到上
        // AW_ACTIVATE激活窗口
        AnimateWindow(ll_handle,1000,AW_SLIDE+AW_VER_POSITIVE+AW_ACTIVATE) 
    Case 2 
        // 淡入并从顶部向下滑动窗口
        // 同上,但AW_VER_NEGATIVE表示垂直方向从上到下
        AnimateWindow(ll_handle,1000,AW_SLIDE+AW_VER_NEGATIVE+AW_ACTIVATE) 
    Case 3 
        // 淡入并向右滑动窗口
        // 同上,但AW_HOR_POSITIVE表示水平方向从左到右
        AnimateWindow(ll_handle,1000,AW_SLIDE+AW_HOR_POSITIVE+AW_ACTIVATE) 
    Case 4 
        // 淡入并向左滑动窗口
        // 同上,但AW_HOR_NEGATIVE表示水平方向从右到左
        AnimateWindow(ll_handle,1000,AW_SLIDE+AW_HOR_NEGATIVE+AW_ACTIVATE) 
    Case 6,5 
        // 淡入并从中心展开窗口
        // 同上,但AW_CENTER表示窗口从中心扩大或缩小
        AnimateWindow(ll_handle,1000,AW_SLIDE+AW_CENTER+AW_ACTIVATE) 
End Choose 

⑤ 在w_animate 窗口的Close事件中添加如下代码

long ll_handle  
//获取该窗口句柄
ll_handle = Handle(This) 
//动画关闭窗口
AnimateWindow(ll_handle,300,AW_SLIDE+AW_HIDE+AW_CENTER) 

⑥ 在w_animate窗口的Clicked事件中添加如下代码

Close(w_animate)

⑦ 在开发界面左边的System Tree 窗口中双击exampleapp应用对象,在其Open事件中添加如下代码

open(w_main)

五、运行程序

运行程序,最终效果如下所示

动画视窗


文章作者: xiezhr
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xiezhr !
评论
  目录