フォームをアニメーション起動・終了(U) <TOP>
起動時フォームは画面左上から中央に、終了時はタスクバー右端に移動して終了します。
DrawAnimatedRects アニメートウィンドウ
フォームは可視なしに設定します。
参照
'================================================================ '= フォームをアニメーション起動・終了(U) '= (DrawAnimatedRects.bas) '================================================================ #include "Windows.bi" Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type ' ウィンドウの矩形寸法を取得 Declare Function Api_GetWindowRect& Lib "user32" Alias "GetWindowRect" (ByVal hWnd&, lpRect As RECT) ' 矩形のアニメーションを実行 Declare Function Api_DrawAnimatedRects& Lib "user32" Alias "DrawAnimatedRects" (ByVal hWnd&, ByVal idAni&, lprct As RECT, lprctEnd As RECT) ' クラス名またはキャプションを与えてウィンドウのハンドルを取得 Declare Function Api_FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$) ' クラス名 、または キャプションを与えてウィンドウのハンドルを取得 Declare Function Api_FindWindowEx& Lib "user32" Alias "FindWindowExA" (ByVal hWndParent&, ByVal hWndChildAfter&, ByVal lpszClass$, ByVal lpszWindow$) ' アニメーションモード #define IDANI_OPEN &H1 'クローズ状態からオープン状態へのアニメーション #define IDANI_CLOSE &H2 'オープン状態からクロース状態へのアニメーション #define IDANI_CAPTION &H3 'アニメーション矩形にタイトルバーを含める #define CLASS_TASKBAR "Shell_TrayWnd" #define CLASS_TASKTRAY "TrayNotifyWnd" Var Shared MainForm As Object Var Shared Button1 As Object MainForm.Attach GethWnd Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var rct As RECT Var rctEnd As RECT Var frmLeft As Long Var frmTop As Long Var Ret As Long ' アニメーションを開始する(Close状態)矩形を指定 rct.Top = 0 rct.Bottom = 0 rct.Left = 0 rct.Right = 0 ' アニメーションを終了する(Open状態)矩形を指定 ' メインフォームの境界矩形の寸法を取得 Ret = Api_GetWindowRect(GethWnd, rctEnd) ' アニメーションの実行 Ret = Api_DrawAnimatedRects(GethWnd, IDANI_OPEN Or IDANI_CAPTION, rct, rctEnd) frmLeft = (GetdeviceCaps(8) - GetWidth) / 2 frmTop = (GetDeviceCaps(10) - GetHeight) / 2 MainForm.MoveWindow frmLeft, frmTop MainForm.ShowWindow -1 End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var rct As RECT Var rctEnd As RECT Var hTaskBar As Long Var hTaskTray As Long Var Ret As Long hTaskBar = Api_FindWindow(CLASS_TASKBAR, ByVal 0) If hTaskBar Then hTaskTray = Api_FindWindowEx(hTaskBar, 0&, CLASS_TASKTRAY, ByVal 0) If hTaskTray Then Ret = Api_GetWindowRect(hTaskTray, rctEnd) Ret = Api_GetWindowRect(GethWnd, rct) Ret = Api_DrawAnimatedRects(GethWnd, IDANI_CLOSE Or IDANI_CAPTION, rct, rctEnd) End If End If End End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End