ページ 11

ウィンドウが閉じられる直前の画面位置の取得について

Posted: 2013年10月20日(日) 11:13
by REF
初めて利用させて頂きます。
Dxライブラリを使用したゲームを作成していて、プログラム終了時の画面位置を記憶したいと思っています。
これについて、GetWindowPosition関数を使えば実現できそうだと思い、確認してみました。
下記のコードで、プログラム中からメインループを抜けた場合は正しく位置を取得できたのですが、
ウィンドウを直接(ウィンドウ右上の☓等で)閉じた場合は期待した結果になりませんでした。
解決方法をご存知の方、ご教示ください。よろしくお願いします。

コード:

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
	ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定

	int x0,y0;
	int x1,y1;

	while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
		GetWindowPosition( &x0, &y0 );
		if( CheckHitKeyAll() ) break;
	}
	GetWindowPosition( &x1, &y1 );

	char buf[256];
	sprintf(buf,"%d",x0);
	WritePrivateProfileString("WindowPos","X0",buf,"./setting.ini");
	sprintf(buf,"%d",x1);
	WritePrivateProfileString("WindowPos","X1",buf,"./setting.ini");

	DxLib_End(); // DXライブラリ終了処理
	return 0;
}  

Re: ウィンドウが閉じられる直前の画面位置の取得について

Posted: 2013年10月20日(日) 14:00
by h2so5
REF さんが書きました: 下記のコードで、プログラム中からメインループを抜けた場合は正しく位置を取得できたのですが、
ウィンドウを直接(ウィンドウ右上の☓等で)閉じた場合は期待した結果になりませんでした。
具体的にどういう結果になったのか書いてください。

Re: ウィンドウが閉じられる直前の画面位置の取得について

Posted: 2013年10月20日(日) 14:26
by REF
>>h2so5さん
失礼しました。
出力は以下のようになりました。

[WindowPos]
X0=630
X1=0

また、ここに環境も追記します。
OSはWindows7(32bit)で、コンパイラはVC++のものです。

Re: ウィンドウが閉じられる直前の画面位置の取得について

Posted: 2013年10月20日(日) 15:01
by h2so5
X0は期待した結果ではないのでしょうか?

Re: ウィンドウが閉じられる直前の画面位置の取得について

Posted: 2013年10月20日(日) 15:24
by REF
>>h2so5さん


……そうですよね。
どういう訳かメインループの外で取得しなければいけない気になっていました。
ありがとうございます!そして大変申し訳ありませんでした!
これで解決という事で!
板汚し失礼しました…。