- 締切済み
MFC ダイアログ上のID取得について
VC++6.0 MFC ダイアログベースで開発しています。 リソースエディタで配置したダイアログ上にある全てのコントロール(ボタン、テキスト等)IDを取得する方法はありませんか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Oh-Orange
- ベストアンサー率63% (854/1345)
★『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/win142.html→『ウィンドウの列挙』 ・http://support.microsoft.com/kb/183009/ja→『WIN32 API を使用しているウィンドウを列挙する方法』 関数: ・http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_enumchildwindows.asp→『EnumChildWindows』 ・http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_enumchildproc.asp→『EnumChildProc』
- yukimican
- ベストアンサー率70% (112/159)
Win32APIなら、 ・EnumChildWindows() または ・GetWindow()で再帰処理 を使えばできそうな気がします。 調べていませんが、MFCでもCWndのメンバ関数で同じようなのがあるはず。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★『GetDlgCtrlID』関数で ID 番号を取得できます。 int GetDlgCtrlID( HWND hwndCtl // コントロールのハンドル ); ・MFC の場合は『pWnd->GetDlgCtrlID()』で良いかと思います。 ・以上。おわり。
補足
ありがとうございます。 回答をいただいた方法でIDを取得できると思いますが、 ダイアログが自分自身に所属しているIDはどれだけあるのか? という事を処理したいと思っています。 何か良い方法はありませんか?