フォームをアニメーション起動・終了(V) <TOP>
8通りのアニメーション方法をテストします。
AnimateWindow フォームをアニメーション表示
「Form2」ボタンクリックをクリックすると、選択したアニメーションでForm2を起動します。フォームをアニメーション起動・終了(T)と同じAPIを使いますが、8通りの方法を切り替えてテストできます。
遅いCPUでキャプチャしたので、スムーズではありませんが・・・
'================================================================
'= フォームをアニメーション起動・終了(V)
'= (AnimateWindow2.bas) '================================================================ #include "Windows.bi" ' フォームをアニメーション表示 Declare Function Api_AnimateWindow& Lib "user32" Alias "AnimateWindow" (ByVal hWnd&, ByVal dwTime&, ByVal dwFlags&) #define AW_ACTIVATE &H20000 'ウィンドウをアクティブにする。AW_HIDEと同時にセットしないこと #define AW_BLEND &H80000 'フェードイン効果。AW_HIDEと同時にセットしないこと #define AW_CENTER &H10 '中心からアニメート #define AW_HIDE &H10000 '非表示にする。既定値は表示 #define AW_HOR_NEGATIVE &H2 '右から左に向かってアニメート #define AW_HOR_POSITIVE &H1 '左から右に向かってアニメート #define AW_SLIDE &H40000 'スライドアニメーションを使う。既定値はロールアニメーション #define AW_VER_NEGATIVE &H8 '下から上に向かってアニメート #define AW_VER_POSITIVE &H4 '上から下に向かってアニメート Var Shared MainForm As Object Var Shared Form2 As Object Var Shared Combo1 As Object MainForm.Attach GethWnd Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14 Var Shared AnimType As Long 'アニメートタイプ '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Form2.CreateWindow "Form2", 0 Combo1.AddString "フェードイン" Combo1.AddString "左から右へ" Combo1.AddString "左上から右下へ" Combo1.AddString "右から左へ" Combo1.AddString "右上から左下へ" Combo1.AddString "上から下へ" Combo1.AddString "下から上へ" Combo1.AddString "中央から外側へ" End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Index As Long Var Ret As Long Index = Combo1.GetCursel + 1 Select Case Index Case 0 Exit Sub Case 1 AnimType = AW_BLEND Case 2 AnimType = AW_SLIDE Or AW_HOR_POSITIVE Case 3 AnimType = AW_VER_POSITIVE Or AW_HOR_POSITIVE Case 4 AnimType = AW_SLIDE Or AW_HOR_NEGATIVE Case 5 AnimType = AW_HOR_NEGATIVE Or AW_VER_POSITIVE Case 6 AnimType = AW_SLIDE Or AW_VER_POSITIVE Case 7 AnimType = AW_SLIDE Or AW_VER_NEGATIVE Case 8 AnimType = AW_CENTER End Select MainForm.EnableWindow 0 Ret = Api_AnimateWindow(Form2.GethWnd, 1000, AnimType) Form2.Cls End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var Ret As Long Ret = Api_AnimateWindow(Form2.GethWnd, 1000, AW_BLEND Or AW_HIDE) MainForm.EnableWindow -1 End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End