前提・実現したいこと
MCIWndCreate関数のdwStyleの説明には、MCIWNDF_SHOWPOSフラグは「ウィンドウタイトルバーに、MCI デバイスのコンテンツ内の現在位置を表示する。」と書いてあったのですが使ってみてもタイトルバーに何も表示されません。
MCIWNDF_SHOWMODEフラグとMCIWNDF_SHOWNAMEフラグについても試したのですが両方とも何も表示されませんでした。
動画は普通に再生できました。
これらのフラグを有効にしてタイトルバーに情報を正しく表示するにはどうすればいいですか?
該当のソースコード
#include <windows.h> #include<Vfw.h> #pragma comment(lib,"vfw32.lib") LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); TCHAR szClassName[] = TEXT("MCITEST"); //ウィンドウクラス HINSTANCE hinst;//インスタンスハンドル格納用 int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow) { MSG msg; BOOL bRet; WNDCLASSEX wc; HWND hWnd; ATOM atom; hinst=hCurInst;//インスタンスハンドルをグローバル変数にコピー wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc;//プロシージャ名 wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hCurInst;//インスタンス wc.hIcon = (HICON)LoadImage(NULL, MAKEINTRESOURCE(IDI_APPLICATION), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED); wc.hCursor = (HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(IDC_ARROW), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = szClassName; wc.hIconSm = (HICON)LoadImage(NULL, MAKEINTRESOURCE(IDI_APPLICATION), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED); if ((atom = RegisterClassEx(&wc)) == 0) return FALSE; hWnd = CreateWindow(MAKEINTATOM(atom), TEXT("MCIウィンドウ作成"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hinst, NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) { if (bRet == -1) { break; } else { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int)msg.wParam; } //ウィンドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { static HWND hmci;//MCIWndCreate関数から返されるハンドル保存用 switch (msg) { case WM_CREATE: hmci=MCIWndCreate( hWnd, hinst, WS_CHILD | WS_VISIBLE | MCIWNDF_SHOWPOS,//ウィンドウスタイルを指定 TEXT("test.wmv")); break; case WM_SIZE: MoveWindow(hmci,0,0,LOWORD(lp),HIWORD(lp),FALSE); break; case WM_ERASEBKGND: break; case WM_DESTROY: MCIWndDestroy(hmci);//MCIウィンドウを破棄する PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, msg, wp, lp)); } return 0; }
補足情報(FW/ツールのバージョンなど)
Microsoft Visual C++ 2010 Express C言語
WIN32 ユニコードビルド Windows7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/13 05:46
2019/01/13 12:24 編集
2019/01/14 02:33