Re: ログファイルが増え続ける ( No.1 ) |
- 名前:774 日時:2018/01/29 20:57
> スクリーン右上にある×ボタンで閉じるとタスクに残り続けています。
...
> ログファイルが何故か延々と「画像ファイルがありません」が追加され
という状況を再現できるコードを書いてみましたが、こういう状況なのではないでしょうか?
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(true);
if (DxLib_Init() == -1) return -1;
SetDrawScreen(DX_SCREEN_BACK);
while (1)
{
char KeyBuf[256];
GetHitKeyStateAll(KeyBuf);
ClearDrawScreen();
int nID = LoadGraph(L"存在しないファイル"); // ファイルが無い、とログに書き出される
ScreenFlip();
}
DxLib_End();
return 0;
}
@ループの中で、存在しないファイルを読もうとし続けているのでログが増え続ける
Aループの中に if (ProcessMessage() == -1) break; とかが無いので [×]を押してもプログラムが終了しない
|
Re: ログファイルが増え続ける ( No.2 ) |
- 名前:管理人 日時:2018/01/30 03:41
主なご返信は 774さんが仰られている通りです
> これ自体は強制終了されたためなのでDXライブラリでどうこうの問題ではないですよね?
いえ、×ボタンが押された場合は強制終了ではありませんので、ウィンドウは閉じられますがプログラムが
強制的に終了されることはなく、ProcessMessage() の戻り値がマイナスの値を返すようになるだけで実行は継続します
なので、ProcessMessage() の戻り値がマイナスの値になったら、メインループを抜けて DxLib_End を実行した後
WinMain 関数から return で抜けてプロセスが終了するようにプログラムを組む必要があります
|
Re: ログファイルが増え続ける ( No.3 ) |
- 名前:BayLeaf(解決) 日時:2018/01/30 13:27
戻り値を代入していなかったから終了しなかったという初歩的な間違いをしていたためでした。
(データをコピーした際に消してしまっていたようでした)
また、メインループでは ProcessMessage を使っていたのですが、
該当箇所では戻り値で抜ける処理をしていたので ProcessMessage を書いていないことに今まで気付きませんでした...。
昔も Windows版で実行した際にタスクに残り続けていて仕様かと思っていたので
恐らくそれも ProcessMessage を書き忘れている気がしています。
何はともあれ、手間を取らせてしまい済みませんでした。
|