Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。
アプリケーションがウィンドウ モードで DirectDraw を使う場合、あらゆるウィンドウ スタイルを作成することができる。ただし、フルスクリーン排他モードのアプリケーションでは、予測不可能な動作を生じることなく WS_EX_TOOLWINDOW スタイルを作成することができない。WS_EX_TOOLWINDOW スタイルでは、ウィンドウを DirectDraw のフルスクリーン排他モード アプリケーションで必要とされる最上位ウィンドウとすることができない。
フルスクリーン排他モード アプリケーションでは、適切な表示をするために、WS_EX_TOPMOST 拡張ウィンドウ スタイルと WS_VISIBLE ウィンドウ スタイルを使うようにする。これらのスタイルは、このアプリケーションをウィンドウ Z オーダーの最前列に維持して、GDI がプライマリ サーフェスに描画するのを阻止する。
次の例では、フルスクリーン排他モード アプリケーションで使うウィンドウを確実に準備する方法を示す。
//////////////////////////////////////////////////////// // ウィンドウ クラスの登録とウィンドウの表示 //////////////////////////////////////////////////////// BOOL WINAPI InitApp(INT nWinMode) { WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.hInstance = g_hinst; wcex.lpszClassName = g_szWinName; wcex.lpfnWndProc = WndProc; wcex.style = CS_VREDRAW|CS_HREDRAW|CS_DBLCLKS; wcex.hIcon = LoadIcon (NULL, IDI_APPLICATION); wcex.hIconSm = LoadIcon (NULL, IDI_WINLOGO); wcex.hCursor = LoadCursor (NULL, IDC_ARROW); wcex.lpszMenuName = MAKEINTRESOURCE(IDR_APPMENU); wcex.cbClsExtra = 0 ; wcex.cbWndExtra = 0 ; wcex.hbrBackground = GetStockObject (NULL_BRUSH); RegisterClassEx(&wcex); g_hwndMain = CreateWindowEx( WS_EX_TOPMOST, g_szWinName, g_szWinCaption, WS_VISIBLE|WS_POPUP, 0,0,0,0, NULL, NULL, g_hinst, NULL); if(!g_hwndMain) return(FALSE); SetFocus(g_hwndMain); ShowWindow(g_hwndMain, nWinMode); UpdateWindow(g_hwndMain); return TRUE; }