プロが教えるわが家の防犯対策術!

VC++6.0 MFC ダイアログベースで開発しています。
リソースエディタで配置したダイアログ上にある全てのコントロール(ボタン、テキスト等)IDを取得する方法はありませんか?
よろしくお願いします。

A 回答 (3件)

★『EnumChildWindows』関数で子ウインドウの列挙(カウント)が出来ます。


・この『EnumChildWindows』関数は列挙用のコールバック関数を使いますのでご自分で定義します。
 そのコールバック関数の中で LPARAM 引数で指定されたカウント変数をインクリメントします。
・以上。おわり。

●呼び出し(子ウインドウのカウント)
DWORD dwGlobalCount = 0;
EnumChildWindows( hWnd, EnumChildProc, (LPARAM)&dwGlobalCount );
dwGlobalCount ←ここに子ウインドウの個数が入っている

●コールバック関数
BOOL CALLBACK EnumChildProc( HWND hWnd, LPARAM lParam )
{
 *((LPDWORD)lParam) += 1;
 return( TRUE );
}

●プロトタイプ宣言
BOOL EnumChildWindows(
 HWND hWndParent,        // 親ウィンドウのハンドル
 WNDENUMPROC lpEnumFunc, // コールバック関数へのポインタ
 LPARAM lParam          // アプリケーション定義の値
);

BOOL CALLBACK EnumChildProc(
 HWND hwnd,    // 子ウィンドウのハンドル
 LPARAM lParam // アプリケーション定義の値
);

リンク:
http://wisdom.sakura.ne.jp/system/winapi/win32/w …→『ウィンドウの列挙』
http://support.microsoft.com/kb/183009/ja→『WIN32 API を使用しているウィンドウを列挙する方法』

関数:
http://msdn.microsoft.com/library/ja/default.asp …→『EnumChildWindows』
http://msdn.microsoft.com/library/ja/jpwinui/htm …→『EnumChildProc』
    • good
    • 0

Win32APIなら、


・EnumChildWindows()
または
・GetWindow()で再帰処理
を使えばできそうな気がします。

調べていませんが、MFCでもCWndのメンバ関数で同じようなのがあるはず。

参考URL:http://www.winapi-database.com/category.html
    • good
    • 1

★『GetDlgCtrlID』関数で ID 番号を取得できます。



int GetDlgCtrlID(
 HWND hwndCtl // コントロールのハンドル
);

・MFC の場合は『pWnd->GetDlgCtrlID()』で良いかと思います。
・以上。おわり。

参考URL:http://msdn.microsoft.com/library/ja/default.asp …

この回答への補足

ありがとうございます。
回答をいただいた方法でIDを取得できると思いますが、
ダイアログが自分自身に所属しているIDはどれだけあるのか?
という事を処理したいと思っています。
何か良い方法はありませんか?

補足日時:2007/02/15 13:07
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A