面白い話だなーと思ったので実験してみました。
コード:
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) {
FILE *fp;
fp = fopen("Mlog.txt","w");
ChangeWindowMode(true); fprintf(fp,"起動プロセス:ウィンドウモードに変更\n");
DxLib_Init(); fprintf(fp,"起動プロセス:Dxライブラリの初期化に成功\n");
while (ProcessMessage() == 0) {
}
fprintf(fp,"プロセスメッセージより0以外の値が返されました\n");
WaitKey(); fprintf(fp,"終了プロセス:何かキーが押されるまで待機しています\n");
DxLib_End(); fprintf(fp,"終了プロセス:Dxライブラリの終了処理を行いました\n");
fclose(fp);
return 0;
}
各重要点にチェックポイントを設け、処理をさせてみました。
すると、以下のようなログファイルが出力されました。
起動プロセス:ウィンドウモードに変更
起動プロセス:Dxライブラリの初期化に成功
プロセスメッセージより0以外の値が返されました
終了プロセス:何かキーが押されるまで待機しています
終了プロセス:Dxライブラリの終了処理を行いました
きちんとWaitKeyも実行され、Dx_endも実行されているのが確認できます。
因みに、なぜこうなったのかを説明しておきますと、
WaitKey関数は実は「キーボードからの入力待ち」ではなく、ただ単純に「入力待ち」なんです。
実はこれ、マウスクリックにも反応して、それでWaitが解除されてしまうんです。
恐らく、×ボタンもウィンドウの中に入っているので、
プロセスを抜ける→そのとき×ボタンを押している→WaitKeyも反応→即座に終了
という流れを踏んでいるのではないかと推測されます。
間違っていたらごめんなさい。