×ボタンで終了してもうまく終わりません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ariel

×ボタンで終了してもうまく終わりません

#1

投稿記事 by ariel » 18年前

初めまして。arielと申します。
以前からこちらのサイトは参考にさせていただいておりましたが、質問するのは初めてです。

早速質問です。

現在、DXライブラリとそのサンプルコードを利用して、サウンドノベル風文字列表示のプログラムを作っています。
文字表示などはだましだまし動くようにできたのですが、ウィンドウの『×』ボタンでプログラムを終了した際、
ウィンドウは閉じるのですが、プロセス上では終了していない状態になってしまいます。
(VC++.net上で実行→終了した場合、ウィンドウは閉じても『デバッグ中止』のボタンがついている状態)

ソースを何度も見直してみたのですが、どこに問題があるのか解らなかったので、質問させていただきました。
ソースの方も添付いたしますので、ヒントだけでもいただけると幸いです。

Justy

Re:×ボタンで終了してもうまく終わりません

#2

投稿記事 by Justy » 18年前

プロセス上では終了していない状態になってしまいます
 ProcessMessage()がアプリケーションが終了した(或いはエラーが発生した)ことを伝えているのに
その指示に従ってアプリを終了しようとしていないのが原因でしょう。

 ×ボタンが押された場合アプリを終了する必要があるので ProcessMessage()は戻り値として
-1を戻します。

 main関数側では ProcessMessage()が 0以外になれば whileループの実行を抜け、
 そのまま main関数を終了しますが、StShori::shori()内の whileループは
ProcessMessage()が -1を返しても、それを無視してループを継続しようとしています。

 その為いつまで経ってもアプリを終了することができないと思われます。


#根本的にこの規模のプログラムで ClearDrawScreen/ScreenFlip/ProcessMessageが
ソースの複数箇所に登場しなければならない作り方はかなり特殊な感じがします。
 1カ所に纏めてみては?

ariel

Re:×ボタンで終了してもうまく終わりません

#3

投稿記事 by ariel » 18年前

ありがとう御座いました。
なるほど、そこを見逃していたのですね…勉強不足でした。

While文の方は修正したので、次は
ClearDrawScreen/ScreenFlip/ProcessMessageを一箇所に纏めるような形に修正してみようと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る