ウィンドウモードで右上のバッテンを押した後に、タスクマネージャのプロセスを見ると実行していたものが残っているんですが
これはちゃんと終了されてないんですよね?
これを解決するためにはバッテンを無効かバッテンを押した時の処理を書く必要があると思うんですが
具体的にどのようにすればよいか教えてください。
ウィンドウ終了処理
Re:ウィンドウ終了処理
環境が書いてありませんが、普通の Windows + Win32 APIの話でしょうか?
プロセスが残っているということは、きっと WinMain関数の終端まで
到達していないのでしょう。
ソースもないので、簡単なアドバイスしかできませんが、
GetMessage() or PeekMessage()のループの終了条件や WM_CLOSE/WM_DESTROYメッセージを
受け取って、適切に処理しているか確認してみてください。
プロセスが残っているということは、きっと WinMain関数の終端まで
到達していないのでしょう。
ソースもないので、簡単なアドバイスしかできませんが、
GetMessage() or PeekMessage()のループの終了条件や WM_CLOSE/WM_DESTROYメッセージを
受け取って、適切に処理しているか確認してみてください。
Re:ウィンドウ終了処理
スイマセン。専門板では無いんですよね。
Visual C++ 2005 Express Edition で Dxライブラリを使用しています。
龍神録のプログラムをちょこちょこ変えて、別のゲームを作ってる感じです。
Visual C++ 2005 Express Edition で Dxライブラリを使用しています。
龍神録のプログラムをちょこちょこ変えて、別のゲームを作ってる感じです。
Re:ウィンドウ終了処理
DXライブラリなら、ProcessMessage()の戻り値に応じてループから抜けるように
書いていますでしょうか?
通常であれば×をクリックしたとき、ProcessMessage()の戻り値は -1が返りますので
その場合ループから抜けて WinMainを終わらせればいいはずです。
龍神録の館のプログラムなら×を押したときに main.cppで while(ProcessLoop()==0) と書いてある
ループを抜けているかどうか確認してください。
もし、戻り値に応じて処理してループを抜けているにも関わらず、プロセスが終了しない場合は
ブレイクポイントやステップ実行でどこまで実行されているのか確認して見てください。
書いていますでしょうか?
通常であれば×をクリックしたとき、ProcessMessage()の戻り値は -1が返りますので
その場合ループから抜けて WinMainを終わらせればいいはずです。
龍神録の館のプログラムなら×を押したときに main.cppで while(ProcessLoop()==0) と書いてある
ループを抜けているかどうか確認してください。
もし、戻り値に応じて処理してループを抜けているにも関わらず、プロセスが終了しない場合は
ブレイクポイントやステップ実行でどこまで実行されているのか確認して見てください。
Re:ウィンドウ終了処理
Justyさんありがとうございます。無事解決しました。
ProcessLoop()の通常時の返り値を1に設定し
while(ProcessLoop())としてメインをループしていました。
そして×が押された時にProcessLoopは-1を返しループを抜けるだろうと思い込んでいたのが原因でした。
while(ProcessLoop()==1)としたところ恐らく正常に終了することが出来ました。
ゲームの方はもう終盤なのに基本構造が分かってないとは、ダメな開発者ですね。。
ProcessLoop()の通常時の返り値を1に設定し
while(ProcessLoop())としてメインをループしていました。
そして×が押された時にProcessLoopは-1を返しループを抜けるだろうと思い込んでいたのが原因でした。
while(ProcessLoop()==1)としたところ恐らく正常に終了することが出来ました。
ゲームの方はもう終盤なのに基本構造が分かってないとは、ダメな開発者ですね。。