職業:プログラマーです。
仕事でOnLButtonDown関数とOnLButtonUp関数でマウスの左ボタンを
押しっぱなしの間処理するプログラマムを作ってます。
ダイアログ上にボタンがあり、そのボタンを押してる間に処理する
プログラマムです。
ダイアログには複数のボタンがあり、どのボタンが押されたかを
判断する必要があります。
そこで、マウスポインタの相対位置はCPointクラスで取得出来ますが
ダイアログ上のボタンの相対座標を取得する方法がどうしても見付かりません。
MFCに取得する関数は存在するのでしょうか。
ボタンの左上、右下の座標が取得出来ればと思うのですが、
GetWindowRectでは、ディスプレイ上のフォームビューの相対座標を
取得する関数のようなので、ボタンの座標を求める方法がわからなくて
切羽詰ってます。
CWnd::ChildWindowFromPoint()というメソッドがありますが、
これをうまく利用できないでしょうか?
レス有難うございます。さっそくやってみます。
OS:WindowsS2000
ツール:VC++ Ver6.0
環境の説明が不十分でした。御免なさい。
>ダイアログ上のボタンの相対座標を取得する方法がどうしても見付かりません。
CWnd::GetClientRect()でわ?
意味が違うのかなぁ。(。_゜)?
or
CWnd::GetWindowRect
+
CWnd::ScreenToClient
sugarさん有難うございます。
>CWnd::ChildWindowFromPoint()というメソッドがありますが、
>これをうまく利用できないでしょうか?
子ウインドウのポインタを取得するMFCですが、
無効になってるボタンをクリックして、デバックすると
確かにボタンクラスという認識があります。
ただ、ボタンのリソースIDなどの
識別出来るものは今のところ見付かっていません。
Bunさん有難うございます。
>CWnd::GetClientRect()でわ?
これだと
ダイアログの
相対座標(大きさ)は取得出来るのですが。
不良PGさん有難うございます。
>CWnd::GetWindowRect
> +
>CWnd::ScreenToClient
こちらも
ダイアログの相対座標を持ってくるのに
使用するみたいです。
ひょっとしてダイアログに対して使ってませんか?
ボタンに対して使いましょう。
(ボタンオブジェクト).GetClientRect()
(ボタンオブジェクトのポインタ)->GetClientRect()
GetDlgItem(ボタンのコントロールID)->GetClientRect()
CWnd::GetWindowRect
CWnd::ScreenToClient
こちらも同様
ハヤトさんの実力がわからないので
ChogeDlg::hoge() // Dialog Classの とある関数で
{
CRect rect;
GetClientRect(&rect);
TRACE(Dialog = %d %d %d %d\n, rect.left, rect.right, rect.top, rect.bottom);
GetDlgItem(IDC_BUTTON1)->GetClientRect(&rect);
TRACE(Button = %d %d %d %d\n, rect.left, rect.right, rect.top, rect.bottom);
}
これぢゃダメ?
ダメなら、もう少し具体的に何をしたいか教えて下さい。(^^;
よー、かぶりまんな~(爆)
た~たららららら たたらら~。
曲名:かぶりつづけるボレロ。
作詞:不良PGさん
作曲:Bun
ゴミです。m(__)m
------------------------------------
Dialog Class 内において
GetClientRect(&rect); // は
this->GetClientRect(&rect); // の意味です
ご存知でしたら、 m(__)m
Bunさん、不良PGさん
有難うございました。かぶったのが幸い良くわかりました。
社内で先輩に聞きづらい事などあるので、
掲示板の存在がとても助かりました。
CRect fff;
GetDlgItem(IDC_BUTTON_C3_OC)->GetWindowRect(&fff);
ScreenToClient(&fff);
でダイアログ上でのボタンの座標をGet出来ました。
CPoint point;
BOOL lll;
lll = fff.PtInRect(point);
でポイントした位置がボタン上かどうかの判断を下す
事も出来ました。
VCを始めて10ヶ月ですが、まだまだ自分は
初心者のようです。
また、疑問がありましたら宜しくお願いします。m(__)m