ページ 1 / 1
プロセスに残ってしまう・・・
Posted: 2010年6月02日(水) 20:42
by 深黒
DxLib_End() ;って
#include "DxLib.h"
int draw();
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( DxLib_Init() == -1 ) return -1;
draw();
WaitKey() ;
DxLib_End() ;
return 0 ;
}
int draw(){
色々処理
DxLib_End() ;
return 0 ;
}
といった感じにプロトタイプ関数(でしたっけ?)中に入れて正常に終了できますか?
タスクマネージャーのプロセスにずっと残ってしまう事があるので・・・

Re:プロセスに残ってしまう・・・
Posted: 2010年6月02日(水) 23:05
by ookami
その前にdrawという名前の関数でDxLib_Endする必要はあるのでしょうか?よかったらソース全てを貼ってもらっていいですか?
ちなみにDxLib_Endは(というか何でもそうですが)main関数で呼ぶか別の関数で呼ぶかで、本質的な違いはありません。どんなタイミングで呼ぶかが重要です。
Re:プロセスに残ってしまう・・・
Posted: 2010年6月03日(木) 00:35
by 深黒
drawは一応代用でやっただけです・・・
int victory(){
if(p1w>p2w||p1w==p2w&&p1p>p2p){
DrawString(0,0,"貴方の勝ちです",White);
WaitTimer(2000);
}
else if(p1w!=p2w||p1p!=p2p){
DrawString(0,0,"相手の勝ちです", White);
WaitTimer(2000);
}
else{
DrawString(0,0,"引き分けです",White);
WaitTimer(2000);
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0;
}
これだとプロセスに残ったままの終わり方をしてしまうので、前の書き込みのdrawのプロトタイプ関数の後にDxLib_End() ;とreturn 0;を書いて終わらせています
Re:プロセスに残ってしまう・・・
Posted: 2010年6月03日(木) 07:42
by ookami
まぁdrawでも代用でも、main関数で初期化したものはできるだけmain関数で解放するのが、後々混乱しなくていいんじゃないかな、という程度の事です。
貼ってもらったvictory関数だけではプロセスが残るかどうかわかりませんが、最初のと合わせて考えると、DxLib_Endの後でWaitKeyしているのが怪しい気はします。
Re:プロセスに残ってしまう・・・
Posted: 2010年6月03日(木) 19:26
by 深黒
こんな感じにしました
・・・が、やはりvictory内にDxLib_End() ;があるとプロセスに残りますね・・・
出来ればvictoryの処理で終了させたいです
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ChangeWindowMode(TRUE); // ウインドウモードに変更
SetGraphMode(800,600,32);
if( DxLib_Init()==-1) return -1
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ){
if(deck==0){
victory();
DxLib_End() ;
return 0;
}
色々処理
}
DxLib_End() ;
return 0;
}
int victory(){
if(p1w>p2w||p1w==p2w&&p1p>p2p){
DrawString(0,0,"貴方の勝ちです",White);
WaitTimer(2000);
}
else if(p1w!=p2w||p1p!=p2p){
DrawString(0,0,"相手の勝ちです", White);
WaitTimer(2000);
}
else{
DrawString(0,0,"引き分けです",White);
WaitTimer(2000);
}
return 0;
}
Re:プロセスに残ってしまう・・・
Posted: 2010年6月03日(木) 19:48
by leaf
単純にEndが行われていないのでは?
whileの中に
if(Key[ProcessMessage() == -1 ){
break ; // エラーが起きたらループを抜ける
}
と書いてみて下さい。
Endはwhileの外だけに書いて下さい。
Re:プロセスに残ってしまう・・・
Posted: 2010年6月04日(金) 00:40
by 深黒
おー、どうやら出来たようです。
返信ありがとうございました