トップページ > 記事閲覧
ログファイルが増え続ける
名前:BayLeaf 日時: 2018/01/29 18:10

お世話になっております。 Windows版(ウィンドウモード)で実行した後、スクリーン右上にある×ボタンで閉じるとタスクに残り続けています。 タスク自体は手動で消せば今のところ問題ないのですが、もし忘れていた場合そこに居座ることになります。 これ自体は強制終了されたためなのでDXライブラリでどうこうの問題ではないですよね? できれば自動的にタスクから消えるようにしたいですが、方法はありますか? ↓が本題です。 画像が存在しなかったときに×ボタンで閉じた場合で、 ログファイルが何故か延々と「画像ファイルがありません」が追加されタスクを消すまでどんどんサイズが増えていきました。 PCを起動している間に上記に気付かなかったらクラッシュしかねないと思うので対策をしたほうが良いかと思われます。 因みに私の環境ではサイズが増え続けてしまったのですが、他の環境だと変わるということはありますか?
メンテ

Page: 1 |

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 を書き忘れている気がしています。 何はともあれ、手間を取らせてしまい済みませんでした。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存