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

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

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

#1

投稿記事 by REF » 12年前

初めて利用させて頂きます。
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;
}  

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 12年前

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

REF

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

#3

投稿記事 by REF » 12年前

>>h2so5さん
失礼しました。
出力は以下のようになりました。

[WindowPos]
X0=630
X1=0

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

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

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

#4

投稿記事 by h2so5 » 12年前

X0は期待した結果ではないのでしょうか?

REF

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

#5

投稿記事 by REF » 12年前

>>h2so5さん


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

閉鎖

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