子のクラス名が重複している場合は?

解決


ガブリオット  2005-08-24 22:48:27  No: 91758

FindWindowでクラス名から親のハンドルを取得し、
取得したハンドルからFindWindowExで子のハンドルをクラス名で探します。

このときクラス名がeditなのですが、
この親ハンドルはeditというクラス名を複数所持しているため
目的のハンドルが返ってきません。

※1:目的のハンドルとはWindowFromPointで調べたテキストボックスのハンドルです。
※2:WindowFromPointで対象のテキストボックスのハンドルを取得し、
     GetClassNameでクラス名(edit)を取得しました。

EnumWindowを使用し子ウインドウを列挙しましたがなぜか目的のハンドルも見つからず。。
たとえEnumWindowで列挙したところでクラス名が重複している場合は結局ハンドルを手動で指定する必要が出てくるのでしょうか?


ガッ  2005-08-24 22:50:59  No: 91759

EnumChildWindowsでは?
まぁ、視覚的に一意ならば、
GetWindowRectなどでウィンドウの位置から推定するのが一番でしょう。


ガブリオット  2005-08-24 22:59:30  No: 91760

ご指導ありがとうございます。
EnumChildWindows、GetWindowRectの詳細について検索してみます。
ボタンを押すたびにタブが切り替わる仕組みなので
恐らくGetWindowRectは使えないのではと推測しています。
(説明不足で申し訳ないです。)


CtrlID  2005-08-24 23:26:39  No: 91761

なら、Control ID値を調べてみたら?
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200505/05050014.txt


通ってみた  2005-08-24 23:47:25  No: 91762

ControlIDでは無理かと。


ガブリオット  2005-08-25 01:52:23  No: 91763

GetWindowで自己解決しました。
皆様ありがとうございました。


ガブリオット  2005-08-25 01:52:23  No: 91764

GetWindowで自己解決しました。
皆様ありがとうございました。


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

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






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