寫在前面
這是PB案例學習筆記系列文章的第11篇,該系列文章適合具有一定PB基礎的讀者。
通過一個個由淺入深的編程實戰案例學習,提高編程技巧,以保證小伙伴們能應付公司的各種開發需求。
文章中設計到的源碼,小凡都上傳到了gitee代碼倉庫https://gitee.com/xiezhr/pb-project-example.git
需要源代碼的小伙伴們可以自行下載查看,后續文章涉及到的案例代碼也都會提交到這個倉庫【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_1
和cb_2
將mle_1
的Text
值設置為:這是一個動態視窗,通過這個窗口演示動態窗口效果,將cb_2
的Text
值設置為關閉
⑦ 保存窗口
四、編寫代碼
① 在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 (●’?’●)