コントロールの絶対的?位置の取得

解決


フウセンウナギ  2007-02-19 20:06:12  No: 135359

VB6 SP5  WindowsXP SP2

フォーム上にフレームをはり、そのフレーム上にテキストボックスを
はります。
このとき、テキストのTopプロパティの値はフレームのTopを0とした
相対的な値になるのですが、これとは別にフォームのTopを0とした
絶対的な値を取得することはできるでしょうか?


黒頭巾  2007-02-19 21:09:18  No: 135360

テキストボックスのTopにフレームのTopを足したらダメなの?


フウセンウナギ  2007-02-19 22:56:32  No: 135361

フレームのTopを加算してもいいのですが、フレームが何重にも
重なる場合面倒だなと思い、フレームの有無に関わらず取得できれば
便利です。


魔界の仮面弁士  2007-02-20 00:59:49  No: 135362

Container のコントロールを見て、それが Parent のコントロール
(つまり Form)と同じものになるまで、コンテナからの相対位置を
繰り返し取得し続けていくとか。


あん  2007-02-20 01:11:31  No: 135363

一番上のフォームの絶対座標を取得
テキストの絶対座標を取得
あとは計算する。


大吉末吉  2007-02-20 01:21:02  No: 135364

「Win32API」の「ClientToScreen関数」を使えばできるのでは?

(1)Formのクライアント領域左上(0,0)のScreen座標を求める。
(2)テキストボック(実際に座標を求めたいコントロール)の、
  フレーム(そのコントロールの直接のコンテナコントロール)上の
  位置(.Left,.Top)のScreen座標を求める。
(3)(2)と(1)の差を求める。

とか・・・

#コレなら、間に何階層あっても、同じ処理で済むはず・・・


Blue  2007-02-20 02:38:10  No: 135365

ClientToScreenよりもMapWindowPointsの方が楽そうな。


フウセンウナギ  2007-02-20 23:14:36  No: 135366

iRet = MapWindowPoints(Text1.hWnd, Me.hWnd, 0, 0)

MapWindowPointsで取得することができました。
どうもありがとうです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加