【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 窗口中添加一个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)

五、运行程序

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

动画视窗

本期内容到这儿就结束了,希望对您有所帮助。 ★,°:.☆( ̄▽ ̄)/$:.°★
我们下期再见 ヾ(•ω•`)o (●’◡’●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

颈源性头痛症状及表

颈源性头痛一般表现为,就是说从枕后一直颞侧,到太阳穴附近,这个是枕小的一个疼痛,还有一部分人从枕后,沿着一个弧线(如下图)的轨迹到了前额,到我们前额,这样一个疼痛&…

ADIL简单测试实例

参考资料:https://blog.csdn.net/geyichongchujianghu/article/details/130045373这个连接是Java的代码,我根据它的链接写了一个kotlin版本的。 AIDL(Android Interface Definition Language)是Android平台上用于进程间通信&…

AI办公自动化:kimi批量新建文件夹

工作任务:批量新建多个文件夹,每个文件夹中的年份不一样 在kimi中输入提示词: 你是一个Python编程专家,要完成一个编写关于录制电脑上的键盘和鼠标操作的Python脚本的任务,具体步骤如下: 打开文件夹&…

FFmpeg编解码的那些事(1)

看了网上很多ffmpeg的编解码的文章和代码,发现有很多文章和代码都过时了,主要还是ffmpeg有很多接口都已经发生变化了。 这里简单说一下,什么是编码和解码。 1.视频编码 对于视频来说,可以理解为多张(rgb或者yuv&…

Python散点图矩阵代码模版

本文分享Python seaborn实现散点图矩阵代码模版,节选自👉嫌Matplotlib繁琐?试试Seaborn! 散点图矩阵(scatterplot matrix)展示原始数据中所有变量两两之间关系,可以规避单一统计指标的偏差&…

Neural Filters:照片恢复

Ps菜单:滤镜/Neural Filters/恢复/照片恢复 Neural Filters/RESTORATION/Photo Restoration 照片恢复 Photo Restoration借助 AI 强大功能快速恢复旧照片,提高对比度、增强细节、消除划痕。将此滤镜与着色相结合以进一步增强效果。 “照片恢复”滤镜利用…

Scikit-Learn随机森林

Scikit-Learn随机森林 1、随机森林1.1、集成学习1.2、Bagging方法1.3、随机森林算法1.4、随机森林的优缺点2、Scikit-Learn随机森林回归2.1、Scikit-Learn随机森林回归API2.2、随机森林回归实践(加州房价预测)1、随机森林 随机森林是一种由决策树构成的集成算法,它在大多情况…

mac安装的VMware虚拟机进行桥接模式配置

1、先进行网络适配器选择,选择桥接模式 2、点击网络适配器 设置... 3、选择WiFi(我使用的是WiFi,所以选择这个),注意看右边的信息:IP和子网掩码,后续配置虚拟机的ifcfg-ens文件会用到 4、编辑if…

【论文阅读笔记】The Google File System

1 简介 Google File System (GFS) 是一个可扩展的分布式文件系统,专为快速增长的Google数据处理需求而设计。这篇论文发表于2003年,此前已在Google内部大规模应用。 GFS不仅追求性能、可伸缩性、可靠性和可用性等传统分布式文件系统的设计目标&#xf…

P9 【力扣+知识点】【算法】【二分查找】C++版

【704】二分查找(模板题)看到复杂度logN,得想到二分 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标&#xff0…

企业微信hook接口协议,ipad协议http,语音转文字

语音转文字 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信msgid是int要转文字的语音消息id 请求示例 {"uuid":"a4ea6a39-4b3a-4098-a250-2a07bef57355","msgid":1063645 } 返回示例 {"data&…

电源模块测试系统怎么测试输入电压范围?

在现代电子设备中,电源模块的性能直接影响着整个系统的稳定性和效率。其中,电源输入电压范围是指电源能够接受的输入电压的最小值和最大值,它是确保电源正常工作的重要参数。为了提高测试效率和精度,自动化的测试方法逐渐取代了传…

【Game】Rumble Heroes

文章目录 1 英雄2 守护兽3 符文4 祝福5 阵容推荐6 Boss7 兑换码 1 英雄 (1)力量 神话英雄 圣骑士-乌瑟尔 传说英雄 双刀-宫本武藏死亡骑士-阿萨斯冰霜骑士-亚瑟疾风焰刃-缘壹熊猫武僧-阿宝 史诗英雄 大剑-克劳德狂战士-奎托斯魔山-克里刚猎人-奈辛瓦里 稀…

宝塔部署Java+Vue前后端分离项目

1. 服务器 服务器选择Linux的CentOS7的版本 2. 宝塔Linux面板 2.1 百度搜索宝塔 2.2 进去之后点击立即免费安装 2.3 选择Linux在线安装,输入服务器信息进行安装(也可以选择其他方式) 安装完成之后会弹一个宝塔的应用面板,并附带有登录名称和密码&…

多模态大模型:系统、趋势与问题

引言 多模态大模型是当今人工智能领域的热门方向之一。它不仅能处理文本,还能理解和生成图像、视频、语音等多种模态的数据。这种能力使得多模态大模型在自然语言处理、计算机视觉等多个领域展示出巨大的潜力和应用价值。那么,多模态大模型是如何训练出…

AI菜鸟向前飞 — LangChain系列之十五 - Agent系列:从现象看机制(中篇)一个Agent的“旅行”

Agent基本架构 先谈谈Agent基本架构概念,如果看得云里雾里,等看完本篇之后,再回头看就会豁然开朗的,而我尽量写得更易懂: ) 这里面会穿插着上一篇的内容,请大家记得往回翻翻,传送门&…

C语言 | Leetcode C语言题解之第118题杨辉三角

题目&#xff1a; 题解&#xff1a; int** generate(int numRows, int* returnSize, int** returnColumnSizes) {int** ret malloc(sizeof(int*) * numRows);*returnSize numRows;*returnColumnSizes malloc(sizeof(int) * numRows);for (int i 0; i < numRows; i) {re…

前端API: IntersectionObserver的那一二三件事

IntersectionObserver 基础 IntersectionObserver 可以监听一个元素和可视区域相交部分的比例&#xff0c;然后在可视比例达到某个阈值的时候触发回调。比如可以用来处理图片的懒加载等等 首先我们来看下基本的格式&#xff1a; const observer new IntersectionObserver(c…

yolov10 使用自己的数据集训练目标检测模型

1 环境配置(使用anaconda) conda create -n yolov10 python=3.9 //创建虚拟环境 conda activate yolov10 //激活虚拟环境 pip install -r requirements.txt //执行yolov10 路径下requirements.txt 安装依赖 pip install -e .2.数据集制作 使用lableImage制作数据集(win版…

华为云Astro Zero低代码平台案例:小、轻、快、准助力销售作战数字化经营

客户背景&#xff1a; 随着业务的不断扩展&#xff0c;华为云某一线作战团队发现&#xff0c;原本基于线上Excel的项目跟踪方式面临新的挑战&#xff1a;多区域、多场景下的业务管理越来越复杂&#xff0c;项目管道存在多种不可控因素&#xff0c;客户关系、进展跟踪同步不及时…