DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ハンドルの取得につきまして

環境/言語:[Windows XP VB6.0]
分類:[VB6以前]

お世話になります。

ハンドルの取得につきまして

ウインドに同じクラス名のEditが3個あります。
Ret = FindWindowEx(hwnd, 0, "Edit", "")で行いますと
決まったEditハンドルが取得されます。
残り2個のEditハンドルを取得したいのですがどのように
すればよいのかご教授していただければ幸いです。
よろしくお願い致します。
■No18670に返信(A.Sさんの記事)

FindWindow(Ex)では、最初に該当した一個のハンドルしか取得できないのではな
いかと思います。
この場合、該当するすべてのウィンドウのハンドルを取得するにはEnumWindowを
使う必要があるかとは思いますが、コールバック関数を指定しなければいけない
など、意外と面倒な気がします(できないことはないです)。

でも、自分のアプリケーションのデータであれば自分で管理している(管理でき
る)と思うのですが、そうではないのでしょうか。
2007/01/02(Tue) 19:21:37 編集(投稿者)

ぽぴ王子様

返信を頂きましてありがとうございました。
まだよく分かっていませんが
3個のEditにコントロールIDがあることが分かりました。
コントロールIDは固定に思われます。決まって取得されたEditハンドルは
一番小さい番号のコントロールIDでしたので最初に取得されたものと思いました?。
クラス名のEditとコントロールIDを組み合わせて3個のEditハンドル
が取得できます関数はありませんでしょうか。
> クラス名のEditとコントロールIDを組み合わせて3個のEditハンドル
> が取得できます関数はありませんでしょうか。

  GetDlgItem と言うAPIのことでしょうか?

以上。
オショウ 様

返信を頂きましてありがとうございました。
GetDlgItemで確認ができました。
解決することができました。
ありがとうございました。
解決済み!
■No18671に返信(ぽぴ王子さんの記事)
> FindWindow(Ex)では、最初に該当した一個のハンドルしか取得できないのではな
> いかと思います。
> この場合、該当するすべてのウィンドウのハンドルを取得するにはEnumWindowを
> 使う必要があるかとは思いますが、コールバック関数を指定しなければいけない
> など、意外と面倒な気がします(できないことはないです)。
FindWindowExならば、第2引数に1つ前のハンドルを指定すればコントロールを列挙することは可能です。

Ret = FindWindowEx(hwnd, 0, "Edit", "")
Ret2 = FindWindowEx(hwnd, Ret, "Edit", "")
Ret3 = FindWindowEx(hwnd, Ret2, "Edit", "")
解決済み!
2007/01/03(Wed) 09:33:29 編集(投稿者)

Blue様

返信を頂きましてありがとうございました。
第2引数に1つ前のハンドルを指定すればコントロールが列挙できます
貴重な情報の提供は大変勉強になりました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板