フォームをアニメーション起動・終了(W)          <TOP>


起動時は、タスクバー右端から画面左上に向かってアニメーション起動し、終了時はタスクバー右端に向かってアニメーション終了します。

SetRect RECT構造体の値を設定

DrawAnimatedRects 矩形のアニメーションを実行

 

参照

フォームをアニメーション起動・終了(U)

 

'================================================================
'= フォームをアニメーション起動・終了(W)
'=    (SetRect.bas)
'================================================================
#include "Windows.bi"

#define IDANI_OPEN &H1                  'クローズ状態からオープン状態へのアニメーション
#define IDANI_CLOSE &H2                 'オープン状態からクローズ状態へのアニメーション
#define IDANI_CAPTION &H3               'アニメーション矩形にタイトルバーを含める

Type RECT
    Left   As Long
    Top    As Long
    Right  As Long
    Bottom As Long
End Type

' RECT構造体の値を設定
Declare Function Api_SetRect& Lib "user32" Alias "SetRect" (lpRect As RECT, ByVal X1&, ByVal Y1&, ByVal X2&, ByVal Y2&)

' 矩形のアニメーションを実行
Declare Function Api_DrawAnimatedRects& Lib "user32" Alias "DrawAnimatedRects" (ByVal hWnd&, ByVal idAni&, lprctStart As RECT, lprctEnd As RECT)

Var Shared scWidth As Long
Var Shared scHeight As Long

'================================================================
'= タスクバー右から画面左上方向へアニメート起動
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var rSource As RECT
    Var rDest As RECT
    Var Ret As Long

    'スクリーンサイズ取得
    scWidth = GetDeviceCaps(8)
    scHeight = GetDeviceCaps(10)

    'スクリーン(rSource)/作成するウインドウサイズ(rDest)
    Ret = Api_SetRect(rSource, scWidth, scHeight, scWidth, scHeight)
    Ret = Api_SetRect(rDest, 0, 0, 240, 140)

    'アニメート
    Ret = Api_DrawAnimatedRects(GethWnd, IDANI_CLOSE Or IDANI_CAPTION, rSource, rDest)

    'フォームの位置設定
    SetWindowSize 240, 140
    MoveWindow 0, 0
    ShowWindow -1
End Sub

'================================================================
'= タスクバー右端に向かってアニメート終了
'================================================================
Declare Sub MainForm_QueryClose edecl ()
Sub MainForm_QueryClose()
    Var rSource As RECT
    Var rDest As RECT
    Var Ret As Long

    'スクリーン(rSource)/作成するウインドウサイズ(rDest)
    Ret = Api_SetRect(rSource, 0, 0, 240, 140)
    Ret = Api_SetRect(rDest, scWidth, scHeight, scWidth, scHeight)

    'アニメート
    Ret = Api_DrawAnimatedRects(GethWnd, IDANI_OPEN Or IDANI_CAPTION, rSource, rDest)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End