フォームをアニメーション起動・終了(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