如果我有一个引用该控件的 CWnd 对象,是否有一种方法可以获取对 MFC 对话框中所有子 windows 或控件的引用?
Is there a way to get a reference to all the child windows or controls on an MFC dialog, given that I have a CWnd object referencing that control?
假设我有一个带有多个按钮的 MFC 对话框。 (例如 "Red"、"Blue"、"Green" 和 "Yellow" 按钮)这些按钮都有诸如 ("IDC_BUTT_RED","IDC_BUTT_BLUE","IDC_BUTT_GREEN","IDC_BUTT_YELLOW")
之类的 ID
考虑到我有一个 CWnd 对象引用放置这些按钮的对话框 window。有没有办法获取这些 ID 的列表?
我知道有一个 CWnd::GetNextDlgGroupItem
方法,根据描述应该遍历一组控件。我尝试使用它,传入一个引用其中一个按钮的 CWnd 对象,然后调用 GetWindowText
方法进行检查,但它总是 returns 对自身的引用。
您可以使用 EnumChildWindows 枚举对话框的所有 child windows。这是一个 C API 函数,因此您使用和获取 HWND 而不是 CWnd。当每个 child window 的 HWND 传递给您的回调函数时,您可以调用 GetClassName 来查找它的 window class 名称(如 "BUTTON")和 GetWindowLong 来找到它的 ID。
假设我有一个带有多个按钮的 MFC 对话框。 (例如 "Red"、"Blue"、"Green" 和 "Yellow" 按钮)这些按钮都有诸如 ("IDC_BUTT_RED","IDC_BUTT_BLUE","IDC_BUTT_GREEN","IDC_BUTT_YELLOW")
考虑到我有一个 CWnd 对象引用放置这些按钮的对话框 window。有没有办法获取这些 ID 的列表?
我知道有一个 CWnd::GetNextDlgGroupItem
方法,根据描述应该遍历一组控件。我尝试使用它,传入一个引用其中一个按钮的 CWnd 对象,然后调用 GetWindowText
方法进行检查,但它总是 returns 对自身的引用。
您可以使用 EnumChildWindows 枚举对话框的所有 child windows。这是一个 C API 函数,因此您使用和获取 HWND 而不是 CWnd。当每个 child window 的 HWND 传递给您的回调函数时,您可以调用 GetClassName 来查找它的 window class 名称(如 "BUTTON")和 GetWindowLong 来找到它的 ID。