• 締切済み

MFC ダイアログ上のID取得について

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

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.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/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)
回答No.2

Win32APIなら、 ・EnumChildWindows() または ・GetWindow()で再帰処理 を使えばできそうな気がします。 調べていませんが、MFCでもCWndのメンバ関数で同じようなのがあるはず。

参考URL:
http://www.winapi-database.com/category.html
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★『GetDlgCtrlID』関数で ID 番号を取得できます。 int GetDlgCtrlID(  HWND hwndCtl // コントロールのハンドル ); ・MFC の場合は『pWnd->GetDlgCtrlID()』で良いかと思います。 ・以上。おわり。

参考URL:
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_getdlgctrlid.asp
aki2007
質問者

補足

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

関連するQ&A

専門家に質問してみよう