【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 (●’◡’●)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

调用萨姆索诺夫函数:深入探索函数的参数与返回值

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、萨姆索诺夫函数的引入与调用 二、如何获取函数的返回值 三、无参数与无返回值的函数调…

基于魔搭开源推理引擎 DashInfer实现CPU服务器大模型推理--理论篇

前言 在人工智能技术飞速发展的今天,如何高效地在CPU上运行大规模的预训练语言模型(LLM)成为了加速生成式AI应用广泛落地的核心问题。阿里巴巴达摩院模型开源社区ModelScope近期推出了一款名为DashInfer的推理引擎,旨在解决这一挑…

语音控制系统的安全挑战与防御策略(上)

语音控制系统(VCS)提供了便捷的用户界面,涉及智能家居、自动驾驶汽车、智能客服等众多应用场景,已成为现代智能设备不可或缺的一部分。其市场规模预计到2023年达到70亿美元,这种扩张带来了重大的安全挑战,如…

STM32简易音乐播放器(HAL库)

一、设计描述 本设计以STM32MP157A单片机为核心控制器,加上其他的模块一起组成基于单片机的音乐盒的整个系统,通过不同频率的PWM使蜂鸣器播放音乐,通过按键中断实现歌曲切换,音量调节,定时器中断实现播放速度调节&…

如何为 kNN 搜索选择最佳 k 和 num_candidates

作者:Madhusudhan Konda 如何选择最好的 k 和 num_candidates? 向量搜索在当前的生成式人工智能/机器学习领域中已经成为一个改变游戏规则的技术。它允许我们基于语义含义而不仅仅是精确的关键词匹配来找到相似的项目。 Elasticsearch的 k-近邻&#x…

使用 Flask 实现异步请求处理

文章目录 为什么需要异步请求处理?在 Flask 中实现异步请求处理使用 Flask-Cors 扩展 总结 在开发 Web 应用程序时,异步请求处理是提高性能和并发能力的重要方法之一。Flask 是一个轻量级的 Web 框架,它提供了易于使用的工具来实现异步请求处…

STM32高级控制定时器(STM32F103):检测输入PWM周期和占空比

目录 概述 1 PWM 输入模式 1.1 原理介绍 1.2 应用实例 1.3 示例时序图 2 使用STM32Cube配置工程 2.1 软件环境 2.2 配置参数 2.3 生成项目文件 3 功能实现 3.1 PWM占空比函数 3.2 输入捕捉回调函数 4 功能测试 4.1 测试软件框架结构 4.2 实验实现 4.2.1 测试实…

邀请媒体参会,媒体邀约的正确打开方式

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 邀请媒体参会是一项重要的公关活动,需要细致的规划和执行。以下是一些步骤和建议,可以帮助你更有效地进行媒体邀约: 1. 拟定邀约媒体名单:…

python数据分析——分组操作1

参考资料:活用pandas库 1、简介 借助“分割-应用-组合”(split-apply-combine)模式,分组操作可以有效地聚合、转换和过滤数据。 分割:基于键,把要处理的数据分割为小片段。 应用:分别处理每个数…

【CUDA】Nsight profile驱动的CUDA优化

前置准备 安装NVIDIA Nsight Compute。 安装好后选择使用管理员权限启动下载官方 Demo 代码官方博客Shuffle warp 1. 任务介绍及CPU版本 1.1 任务介绍 任务理解: 有一个 L x M 的矩阵 M 1 M_1 M1​ 对其每行取平均值 得到 V 1 ∈ R L 1 V_1 \in \mathbb{R}^{…

Java | Leetcode Java题解之第117题填充每个节点的下一个右侧节点指针II

题目: 题解: class Solution {Node last null, nextStart null;public Node connect(Node root) {if (root null) {return null;}Node start root;while (start ! null) {last null;nextStart null;for (Node p start; p ! null; p p.next) {if…

学习笔记——数据通信基础——数据通信网络(拓扑结构)

网络拓扑 网络拓扑(Network Topology)是指用传输介质(例如双绞线、光纤等)互连各种设备(例如计算机终端、路由器、交换机等)所呈现的结构化布局。 1、网络拓扑形态 星型网络∶所有节点通过一个中心节点连接在一起。 优点∶容易在网络中增加新的节点。通信数据必须经过中心节点…

【2】:向量与矩阵

向量 既有大小又有方向的量叫做向量 向量的模 向量的长度 单位向量 (只表示方向不表示长度) 向量的加减运算 向量求和 行向量与列向量的置换 图形学中竖着写 向量的长度计算 点乘(计算向量间夹角) 点乘满足的运算规律 交换律、结合律、分配…

新型高性能数据记录仪ETHOS 2

| 具有强大CPU性能的数据记录仪 IPETRONIK推出了一款新型高性能数据记录仪——ETHOS 2,作为ETHOS的第二代,它借助新型英特尔i7-9850HE处理器,实现了11,572的性能指数,从而能够快速有效应对CAN FD、LIN和以太网总线测量方面的日益…

【校园网网络维修】当前用户使用的IP与设备重定向地址中IP不一致,请重新认证

出现的网络问题:当前用户使用的IP与设备重定向地址中IP不一致,请重新认证 可能的原因: 把之前登录的网页收藏到浏览器,然后直接通过这个链接进行登录认证。可能是收藏网址导致的ip地址请求参数不一致。 解决方法: 方法…

循环buffer“一写多读“

1.往期回顾 一个简单实用的循环buffer,用于缓冲数据!测试500M数据,耗时1.3秒。 C语言版本的循环buffer比C版本的速度更快!测试500M数据0.5秒,达9.25Gbps左右! C 语言免拷贝版本循环 buffer 比拷贝版本快了…

apexcharts数据可视化之饼图

apexcharts数据可视化之饼图 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式: 基础饼图单色饼图图片饼图 基础饼图 import ApexChart from react-apexcharts;export function SimplePie() {// 数据序列const series [44, 55, 13, 43, 22]// …

2024年下半年自考报名信息汇总

2024年下半年自考报名信息汇总,报名详细流程如下图所示:

抖店起店玩法,2024年最新保姆级抖音小店开店教程

课程下载:https://download.csdn.net/download/m0_66047725/89360739 更多资源下载:关注我。 课程内容: 1-抖音如何精细化选品 2-达人合作的谈判技巧 3-达人合作细节注意事项 4-短视频达人筛选方法与数据维度 5-短视频带货达人分析工具…

C++青少年简明教程:for循环语句

C青少年简明教程:for循环语句 C的for循环语句是一种迭代控制语句,用于重复执行一段代码。 语法格式: for(表达式1;表达式2;表达式3) 循环体 for循环语句执行流程图: 不太好理解,请看下图&am…