ページ 11

マウスのクリック位置がずれる

Posted: 2011年1月18日(火) 12:04
by dic
マウスで操作をうけつけるように画像の水色の部分(100,100)-(200,200)の領域に
うけつける部分を設定して、わかるように色をつけました
そして、クリックの判定を行おうとすると、どうしてもy座標が20ドットくらい下にずれるのです
おそらくウィンドウ座標とクライアント座標のずれかなと思っているので
タイトルバーの座標をプラスすればいいと思ってます
そこで、タイトルバーの大きさの取得方法を教えてもらえないでしょうか?

画像の赤い部分のちょっとずれているところで反応するのです

Re: マウスのクリック位置がずれる

Posted: 2011年1月18日(火) 12:28
by softya(ソフト屋)
すいません、DXライブラリだとちゃんとクライアント領域だとおもいますが、ライブラリ/APIは何ですか?

Re: マウスのクリック位置がずれる

Posted: 2011年1月18日(火) 13:15
by Blue
タイトルバーの高さ分だけ下にずれている?

Re: マウスのクリック位置がずれる

Posted: 2011年1月18日(火) 13:24
by dic
>>softyaさん
>すいません、DXライブラリだとちゃんとクライアント領域だとおもいますが、ライブラリ/APIは何ですか?
説明不足でした
DXライブラリは使用していないです

>>Blueさん
>タイトルバーの高さ分だけ下にずれている?
おそらくの予想です

ウィンドウプロシージャでマウスの座標を取得しています
コードはしたのようにしています

コード:

	case WM_LBUTTONDOWN:
		x = lParam & 0xFFFF;
		y = (lParam>>16)&0xFFFF;
		DEF_DXDRAW->LButtonDown( x, y );
		break;

Re: マウスのクリック位置がずれる

Posted: 2011年1月18日(火) 14:30
by Ciel
そもそも、画像の水色の部分の描画位置がずれてるんじゃないですか?

Re: マウスのクリック位置がずれる

Posted: 2011年1月18日(火) 15:17
by softya(ソフト屋)
WM_LBUTTONDOWNはクライアント領域の座標だと思いますんで、やはり他の描画がクライアント領域ではないのでは?

Re: マウスのクリック位置がずれる

Posted: 2011年1月18日(火) 15:23
by dic
>>Ciel さん
>そもそも、画像の水色の部分の描画位置がずれてるんじゃないですか?
(0,0)-(100,100) と (100,100)-(200,200) を描画して試してみましたが
描画の方にズレはありませんでした
念のためクリックしたときの位置も画面に表示するようにしましたが、ズレてはいませんでした

しかし気になることがありました
SetWindowPos( hwndApp, NULL, 100, 100, 640, 480, NULL );
でウィンドウの大きさを調整しているのですが、このときの 640, 480 のサイズはタイトルバーを含めての
ウィンドウ全体の大きさな気がしてきました・・・

Re: マウスのクリック位置がずれる

Posted: 2011年1月18日(火) 15:26
by みけCAT
dic さんが書きました:しかし気になることがありました
SetWindowPos( hwndApp, NULL, 100, 100, 640, 480, NULL );
でウィンドウの大きさを調整しているのですが、このときの 640, 480 のサイズはタイトルバーを含めての
ウィンドウ全体の大きさな気がしてきました・・・
たぶんそうだと思います。
必要ならこのクライアント領域のサイズを指定してウィンドウをリサイズする関数を使ってみてください。
hWnd:ウィンドウハンドル
x:横の大きさ
y:縦の大きさ

コード:

void wndresizebyclient(HWND hWnd,int x,int y) {
	RECT size;
	RECT wndsize;
	GetClientRect(hWnd,&size);
	GetWindowRect(hWnd,&wndsize);
	wndsize.right=wndsize.right-wndsize.left;
	wndsize.bottom=wndsize.bottom-wndsize.top;
	SetWindowPos(hWnd,NULL,0,0,x+wndsize.right-size.right,y+wndsize.bottom-size.bottom,SWP_NOMOVE | SWP_NOREPOSITION | SWP_NOZORDER);
}

Re: マウスのクリック位置がずれる

Posted: 2011年1月18日(火) 15:40
by dic
>>softyaさん
数秒違いで書き込みました
みけCATさんの方法で解決しました

>>みけCATさん
書き込んだソースを適応したらうまく、クライアントの領域が640x480になりました

softyaさん Blueさん Cielさん みけCATさん
ありがとうございました