![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
あるサンプルプログラムを改造しようとしているのですが、g_hWnd=CreateWindow(
_T(__FILE__),_T("シューティングゲーム"),WINDOW_STYLE,
CW_USEDEFAULT,CW_USEDEFAULT,rc.right-rc.left,rc.bottom-rc.top,
NULL,NULL,hInst,NULL);のところのWINDOW_STYLEをWS_OVERLAPPEDWINDOWに変えたらウィンドウが表示されません。どうしたら表示されるのでしょうか。わかる方いらいしたらご教授お願いします。多分ここだろうなというところのコードを載せます。
LRESULT CALLBACK MainWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_KEYDOWN:
switch(wParam)
{
case VK_F1: ChangeDisplayMode(); return 0;
case VK_ESCAPE: PostMessage(hWnd,WM_CLOSE,0,0); return 0;
}
return 0;
case WM_DISPLAYCHANGE:// IDirect3DDevice9::Reset メソッドから Send される
DisplayChange();
return 0;
case WM_SIZE:
if(g_bWndMode==false || wParam==SIZE_MINIMIZED) return 0;
g_D3DPP.BackBufferWidth = LOWORD(lParam);
g_D3DPP.BackBufferHeight = HIWORD(lParam);
if(wParam==SIZE_MAXIMIZED || wParam==SIZE_RESTORED) ChangeWindowSize();
return 0;
case WM_ACTIVATE:
g_bActive=(LOWORD(wParam)!=WA_INACTIVE);
return 0;
case WM_DESTROY:
CleanupD3DObject();
CleanupDXGraphics();
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}
No.3ベストアンサー
- 回答日時:
こんばんは。
確かにオカシイですねえ・・・。以下URLに書かれていましたが、其の現象は普通ではない様です。
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?p …
hWnd = CreateWindow(szWindowClass, _T(""),WS_OVERLAPPEDWINDOW | WS_VISIBLE,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,NULL, NULL,hInstance, NULL);
↓
hWnd = CreateWindow(szWindowClass, _T(""),WS_OVERLAPPEDWINDOW | WS_VISIBLE,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,NULL, NULL, hInstance, NULL);
で表示出来ました。
出来ました。ありがとうございます。それでもう1つ質問なのですが、
RECT rc={0,0,640,480};
AdjustWindowRect(&rc,WS_OVERLAPPEDWINDOW ,FALSE);
// ウィンドウ作成
hWnd = CreateWindow(szWindowClass, _T(""),
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT,CW_USEDEFAULT,rc.right-rc.left,rc.bottom-rc.top,
NULL, NULL, hInstance, NULL);
で
>表示状態で位置の初期化などをすると、移動中のチラつきが見えてしまったりと、見苦しい事もあります。
初期化と同時に表示位置の設定をしているのになぜチラつきがみえてしますのでしょうか?
No.4
- 回答日時:
失礼。
×表示状態で位置の初期化などをすると、移動中のチラつきが見えてしまったりと、見苦しい事もあります。
○表示状態で位置の移動をすると、移動中のチラつきが見えてしまったりと、見苦しい事もあります。
と言う事です。
No.2
- 回答日時:
こんばんは。
御礼頂きました。WS_VISIBLEを省略した場合、ウィンドウは非表示で作成されるからです。
ウィンドウは、表示状態で位置の初期化などをすると、移動中のチラつきが見えてしまったりと、見苦しい事もあります。
ユーザーの目に見えない状態で作成され、位置の初期化などが終わった段階で、初めて表示された方が良いケースも珍しくはありません。
WS_VISIBLEを無くして非表示で作成した後、
ShowWindow(hWnd, SW_SHOW)
を呼び出す事で、遅延表示したりとタイミングの調整を行ったりする事も出来ます。
回答ありがとうございます。別のプログラムでWS_VISIBLEをやったら表示できませんでした。
これはなぜでしょうか?
int APIENTRY
_tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
HRESULT hr;
LPCTSTR lpszFilename = _T("colorbar.png");
WNDCLASSEX wcex;
LPCTSTR szWindowClass = _T("{45320057-ECD4-4c79-BE64-009DCBD6AEF6}");
// ウィンドウクラス登録
::ZeroMemory(&wcex, sizeof(WNDCLASSEX));
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
wcex.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
wcex.hCursor = LoadCursor (NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszClassName = szWindowClass;
if (!RegisterClassEx(&wcex))
return FALSE;
// ウィンドウ作成
hWnd = CreateWindow(szWindowClass, _T(""),
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
NULL, NULL, hInstance, NULL);
if (!hWnd)
return FALSE;
// パラメータのセット
//省略
hr=InitDXGraphics(lpszFilename);
if(FAILED(hr))
{
DestroyWindow(hWnd);
}
else
{
//省略
}
if(g_bWndMode==false)// フルスクリーンモードで起動
{
g_bWndMode=true;
ChangeDisplayMode();
}
// 一回再描画してウィンドウ表示
Draw();
AppIdle();
// メイン メッセージ ループ:
timeBeginPeriod(1);// 最小分解能を1[ms]に設定する
while(true)
{
//メッセージループ
}
}
timeEndPeriod(1);
// 後処理
return (int) msg.wParam;
}
質問ばかりで申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラー Run-Time Check Failur...
-
return文がない場合の戻り値は...
-
Win32APIにて、ウィンドウ全体...
-
WM_CREATE について
-
オーバーレイみたいな処理がしたい
-
【Windowsアプリ】ファイルのド...
-
ツリーコントロールの開閉アイ...
-
COMPORTマルチスレッドで例外発生
-
「指定されたキャストは有効で...
-
マイナスからプラスへ転じた時...
-
DWORDの実際の型は何でしょうか
-
Enterキーを押されたら次の処理...
-
信頼区間の1.96や1.65ってどこ...
-
CStringのFindで文字列検索を行...
-
2÷3などの余りについて
-
C言語での引数の省略方法
-
「Aに対するBの割合」と「Aに対...
-
構文エラー";"が型の前にあり...
-
C++のfor文について
-
プログラムでの数字につく”f”の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
音量調節
-
return文がない場合の戻り値は...
-
C#のswitch文を簡略化したいの...
-
ゲームとかの解像度変更&全画...
-
エラー Run-Time Check Failur...
-
コンソールアプリケーションの...
-
キャレットの現在位置の表示 (W...
-
エディットボックスの背景の色...
-
COMPORTマルチスレッドで例外発生
-
ツリーコントロールの開閉アイ...
-
C言語win32api、エディットボッ...
-
Win32APIにて、ウィンドウ全体...
-
Win32APIでウィンドウを中央に...
-
エディットコントロール入力時...
-
ダイアログプログラムでEnterキ...
-
不思議な現象が起こるプログラ...
-
Win32のファイルダイアログのサ...
-
C言語のswitch case文で、scanf...
-
WM_CREATE について
-
ボタンのアイコン表示
おすすめ情報