// 'mediaplay.cpp' #include #include LPSTR gbCmdLine; LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { char buffer[256]; buffer[255] = NULL; switch(message) { case WM_CREATE: snprintf(buffer, 255, "open %s alias contents", gbCmdLine); if(mciSendString(buffer, NULL, 0, NULL)) { PostQuitMessage(1); break; } mciSendString("play contents fullscreen notify", NULL, 0, hWnd); // フルスクリーンで再生 // mciSendString("play contents window notify", NULL, 0, hWnd); // ウィンドウを開いて再生 break; case MM_MCINOTIFY: case WM_DESTROY: case WM_QUIT: mciSendString("close contents", NULL, 0, NULL); PostQuitMessage(0); break; default: // 処理しない場合は, システムに渡す return DefWindowProc(hWnd, message, wParam, lParam); } return NULL; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow) { gbCmdLine = szCmdLine; // グローバル変数を介しコマンドライン(ファイル名)を渡す 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)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; // .RC ファイルのメニューリソース名 wc.lpszClassName = "Example"; // CreateWindow 関数を呼び出すときに使われる名前 RegisterClass(&wc); CreateWindow( "Example", // RegisterClass() 関数の呼び出しを参照 "Example _heapset 32 bit only", // ウィンドウのタイトルバー用のテキスト WS_OVERLAPPEDWINDOW, // ウィンドウスタイル CW_USEDEFAULT, // デフォルトの水平位置 CW_USEDEFAULT, // デフォルトの垂直位置 CW_USEDEFAULT, // デフォルトの幅 CW_USEDEFAULT, // デフォルトの高さ NULL, // オーバーラップしたウィンドウは親プロセスを持たない NULL, // ウィンドウクラスメニューの使用 hInstance, // このインスタンスは, このウィンドウを持つ NULL // ポインタは不必要 ); // ShowWindow(hWnd, nCmdShow); // ウィンドウを表示 // UpdateWindow(hWnd); // WM_PAINT メッセージを送る MSG msg; while(GetMessage(&msg, NULL, NULL, NULL)) { TranslateMessage(&msg); // 仮想キーコードを翻訳 DispatchMessage(&msg); // メッセージをウィンドウに送る } return (int)msg.wParam; }