「Windows API/イベントドリブン方式」の版間の差分

削除された内容 追加された内容
編集の要約なし
10 行
 
なお、(グローバル変数の宣言などの例外を除くと、)プログラム中のなんらかの処理は、ほとんどが、なんらかのイベントと関連づけられます。
 
 
 
34 ⟶ 33行目:
冒頭の数行目あたりに
 
<syntaxhighlight lang=c"C">
// グローバル変数:
HINSTANCE hInst; // 現在のインターフェイス
46 ⟶ 45行目:
たとえば、整数型の変数 kazu を宣言したい場合、次のようになります。
 
<syntaxhighlight lang=c"C">
// グローバル変数:
HINSTANCE hInst; // 現在のインターフェイス
108 ⟶ 107行目:
 
さて、WindowsAPIの起動時にVisual Studio の自動作成するコードをよく見ると、
<syntaxhighlight lang=c"C">
MSG msg;
 
129 ⟶ 128行目:
 
:例
<syntaxhighlight lang=c"C">
MSG msg;
 
163 ⟶ 162行目:
 
DirectX系のゲームなどのプログラミングの場合、プレイヤーの入力を待たずに画面などが更新され続けますが、それらの機能は一般に PeekMessage() 関数に置き換えることによって実装されています。
 
 
;エラー例
なお、ネットには下記のように while側で WM_QUIT の有無を判断する類のコードがありますが、しかし2020年現代のVisual Studio2019では、これはコンパイルが通らないです。(「C4700 初期化されていないローカル変数 <code>msg</code> が使用されます」というエラーが出ます。)
 
:例
<syntaxhighlight lang="C">
// エラーになります。(×)
 
MSG msg;
 
// メイン メッセージ ループ:
while (msg.message == WM_QUIT) // WM_QUIT の有無をwhileで判断
{
if ( PeekMessage(&msg,NULL,0,0,PM_REMOVE) ) // if文の条件式が変わっている
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
// 描画処理など
// InvalidateRect(hwnd , NULL , FALSE); // 描画の実行
}
}
return (int)msg.wParam;
</syntaxhighlight>