マウスで操作をうけつけるように画像の水色の部分(100,100)-(200,200)の領域に
うけつける部分を設定して、わかるように色をつけました
そして、クリックの判定を行おうとすると、どうしてもy座標が20ドットくらい下にずれるのです
おそらくウィンドウ座標とクライアント座標のずれかなと思っているので
タイトルバーの座標をプラスすればいいと思ってます
そこで、タイトルバーの大きさの取得方法を教えてもらえないでしょうか?
画像の赤い部分のちょっとずれているところで反応するのです
マウスのクリック位置がずれる
マウスのクリック位置がずれる
- 添付ファイル
-
- 無題.JPG (47.72 KiB) 閲覧数: 5757 回
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: マウスのクリック位置がずれる
すいません、DXライブラリだとちゃんとクライアント領域だとおもいますが、ライブラリ/APIは何ですか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: マウスのクリック位置がずれる
WM_LBUTTONDOWNはクライアント領域の座標だと思いますんで、やはり他の描画がクライアント領域ではないのでは?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: マウスのクリック位置がずれる
>>Ciel さん
>そもそも、画像の水色の部分の描画位置がずれてるんじゃないですか?
(0,0)-(100,100) と (100,100)-(200,200) を描画して試してみましたが
描画の方にズレはありませんでした
念のためクリックしたときの位置も画面に表示するようにしましたが、ズレてはいませんでした
しかし気になることがありました
SetWindowPos( hwndApp, NULL, 100, 100, 640, 480, NULL );
でウィンドウの大きさを調整しているのですが、このときの 640, 480 のサイズはタイトルバーを含めての
ウィンドウ全体の大きさな気がしてきました・・・
>そもそも、画像の水色の部分の描画位置がずれてるんじゃないですか?
(0,0)-(100,100) と (100,100)-(200,200) を描画して試してみましたが
描画の方にズレはありませんでした
念のためクリックしたときの位置も画面に表示するようにしましたが、ズレてはいませんでした
しかし気になることがありました
SetWindowPos( hwndApp, NULL, 100, 100, 640, 480, NULL );
でウィンドウの大きさを調整しているのですが、このときの 640, 480 のサイズはタイトルバーを含めての
ウィンドウ全体の大きさな気がしてきました・・・
Re: マウスのクリック位置がずれる
たぶんそうだと思います。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);
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: マウスのクリック位置がずれる
>>softyaさん
数秒違いで書き込みました
みけCATさんの方法で解決しました
>>みけCATさん
書き込んだソースを適応したらうまく、クライアントの領域が640x480になりました
softyaさん Blueさん Cielさん みけCATさん
ありがとうございました
数秒違いで書き込みました
みけCATさんの方法で解決しました
>>みけCATさん
書き込んだソースを適応したらうまく、クライアントの領域が640x480になりました
softyaさん Blueさん Cielさん みけCATさん
ありがとうございました