/*****************************************************
Animation Sample
"comctl32.lib"をリンクに追加する!
2002.Jun.30
K_Yaguchi
URL http://www5b.biglobe.ne.jp/~kouta_y/
mailto kouta_y@mve.biglobe.ne.jp
*****************************************************/
#include <windows.h>
#include <commctrl.h> // コモンコントロールヘッダ
#define ClassName "AnimateSample"
/******************************
ウィンドウプロージャ
*******************************/
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
static HWND hAnim;
HDC hdc;
PAINTSTRUCT ps;
LPCTSTR str[] = {"左クリックで再生", "右クリックで停止"};
switch (msg) {
case WM_DESTROY:
Animate_Close(hAnim); // アニメーションコントロール破棄
PostQuitMessage(0);
break;
case WM_LBUTTONUP:
Animate_Play(hAnim, 0, -1, -1); // 再生(フレーム0から連続再生)
break;
case WM_RBUTTONUP:
Animate_Stop(hAnim); // 停止
break;
case WM_CREATE:
// コモンコントロールの初期化
InitCommonControls();
// アニメーションコントロールの作成
hAnim = Animate_Create(
hWnd, // 親ウィンドウ
101, // コントロールID
WS_CHILD | WS_VISIBLE | ACS_TRANSPARENT, // コントロールスタイル
(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE) // インスタンスハンドル
);
// アニメーションファイルを開く
// ファイルから
// Animate_Open(hAnim, "FILECOPY.AVI");
// リソースから
Animate_OpenEx(hAnim, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), "IDR_AVI");
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
SetBkMode(hdc, TRANSPARENT);
TextOut(hdc, 80, 100, str[0], lstrlen(str[0]));
TextOut(hdc, 80, 120, str[1], lstrlen(str[1]));
EndPaint(hWnd, &ps);
break;
default:
return DefWindowProc(hWnd, msg, wp, lp);
}
return 0;
}
/***************
メイン
****************/
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, PSTR lpCmdLine, int nCmdShow) {
HWND hWnd;
MSG msg;
WNDCLASS wc;
// ウィンドウクラス登録
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.lpszMenuName = NULL;
wc.lpszClassName = ClassName;
if (!RegisterClass(&wc)) return 0;
// オーナーウィンドウ作成
hWnd = CreateWindow(
ClassName,
"アニメーション!",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, 320, 240,
NULL, NULL,
hInstance, NULL
);
if (hWnd == NULL) return 0;
// メッセージループ
while(GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage (&msg);
}
// ウィンドウクラスの登録解除
UnregisterClass(ClassName, hInstance);
return msg.wParam;
}
|