トップページ > 過去ログ > 記事閲覧
KeyInputString
名前:初心者 日時: 2007/04/20 16:11

ウィンドウモードでソフトを起動してKeyInputStringで文字列の入力中に×キーを押して ソフトを終了させると ウィンドウは消えるのですが、画像やDrawString などの関数で絵画したものが、そのまま残ってしまいます。どうすれば、絵画したものを完全に消去 できるのでしょうか?

Page: 1 |

Re: KeyInputString ( No.1 )
名前:管理人 日時:2007/04/21 12:49

 始めまして、DXライブラリの管理人です。  DXライブラリを使用して作成したソフトは×ボタンを押してウインドウを 閉じると ProcessMessage 関数が -1 を返すようになりますが、プログラムは そのまま走り続けますので、KeyInputString の後 ProcessMessage 関数を呼んで -1 が返ってくるようでしたらなるべく何もせずにソフトを終了するようにすれば 描画物が画面に残ることは無くなります。 // KeyInputString 関数のサンプルに、ProcessMessage が -1 を返した // 場合の処理を追加したもの #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { char Name[ 31 ] ; // ウインドウモードで起動 ChangeWindowMode( TRUE ); // DXライブラリの初期化 if( DxLib_Init() == -1 ) return -1 ; // 名前入力指示文字列の描画 DrawString( 0 , 0 , "名前を入力してください" , GetColor( 255 , 255 , 255 ) ) ; // 名前の入力 KeyInputString( 0 , 16 , 30 , Name , FALSE ); // ウインドウが閉じられていない場合のみこの後の処理を実行する if( ProcessMessage() != -1 ) { // 画面の初期化 ClearDrawScreen() ; // 名前の表示 DrawString( 0 , 0 , "あなたの名前は" , GetColor( 255 , 255 , 255 ) ) ; DrawString( 0 , 16 , Name , GetColor( 255 , 255 , 255 ) ) ; // キー入力待ち WaitKey() ; } // DXライブラリの使用終了 DxLib_End() ; // 終了 return 0 ; }  と、ここまで書いてから自分の環境で試してみた所、KeyInputString 内で ClearDrawScreen を呼んでしまっていて、画像は残らないもののウインドウが あった部分に黒い四角が残るようになってしまっていましたので、ProcessMessage 関数の戻り値を確認する処理を追加するのと併せて、修正したこちらのバージョンを お使いになってみて下さい。m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)

Page: 1 |