| |||||||||||||||||||||||||||||||||||||||||
サイト内検索
カスタム検索
|
ウィンドウのアニメーションWindows 2000 以降、ウィンドウをアニメーション表示するための API がサポートされている。 アニメーションは見てみないと分かりにくいので、サンプルコードをダウンロードして見ていただきたい。すぐに実行できるよう、今回はバイナリ (exe) も含めている。 サンプルコードのダウンロード [aniwnd.zip, makefile プロジェクト] このサンプルでは二通りのアニメーションを使う。ひとつは、上図のように下方から上に向かってウィンドウが順に表示されるタイプ。そしてもうひとつは、 ウィンドウが半透明となり消えてゆくタイプである。ウィンドウが消えるデモを見るには、サンプルコードに含まれる animatewnd.exe の画面を左クリックする。 早速、サンプルコードを説明する。WinMain には変わったことは何も無いので省略する。 ウィンドウプロシージャは次の通り。メッ セージクラッカを使っている。ハンドラ名は OnTimer, OnCreate... などのように WM_XYZ を OnXYZ のようにした。 LRESULT CALLBACK WndProc ( HWND
hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) { このサンプルでは、起動直後にウィンドウがアニメーションさせるために OnCreate で AnimateWindow を呼び出している。ウィンドウが下方から上方へスライドするように表示されるようにしているので、AnimateWindow の第三パラメータに AW_VER_NEGATIVE を指定する。 BOOL OnCreate(HWND
hwnd, LPCREATESTRUCT lpCreateStruct) { 一つ目のアニメーションはこれだけで終了である。簡単だ。 次にウィンドウがフェードアウトするアニメーションを行う。これも単に、AnimateWindow に AW_HIDE | AW_BLEND を指定して呼び出すだけである。 void OnLButtonUp(HWND hwnd, int x, int y,
UINT keyFlags) { このサンプルコードでは、 メインウィンドウをフェードアウトさせそのままプログラムを終了させているので、タイマーを使って PostQuitMessage を呼び出すタイミングを作っている (そうしないと、ウィンドウが見えなくなるがプロセスが残る)。 void OnTimer(HWND hwnd, UINT id) { AnimateWindow API は使い方が簡単な割りに、ユーザーに対してインパクトがあるので効果的に使いたい。
|
||||||||||||||||||||||||||||||||||||||||
|
© 2008-2010 小山圭介 All Rights Reserved.
|
|||||||||||||||||||||||||||||||||||||||||