有没有办法获得对MFC对话框中所有子窗口或控件的引用,因为我有一个CWnd对象引用该控件?

时间:2015-01-05 22:18:47

标签: c++ windows mfc controls

假设我有一个带有几个按钮的MFC对话框。 (例如“红色”,“蓝色”,“绿色”和“黄色”按钮)这些按钮都有ID,例如("IDC_BUTT_RED","IDC_BUTT_BLUE","IDC_BUTT_GREEN","IDC_BUTT_YELLOW")

鉴于我有一个CWnd对象,它引用了这些按钮所在的对话框窗口。有没有办法获得这些ID的列表?

我知道有一个CWnd::GetNextDlgGroupItem方法,基于描述应该迭代一组控件。我尝试使用它,传入CWnd对象引用其中一个按钮,然后调用GetWindowText方法进行检查,但它总是返回对自身的引用。

1 个答案:

答案 0 :(得分:2)

您可以使用EnumChildWindows枚举所有对话框的子窗口。这是一个C API函数,因此您可以使用并获取HWND而不是CWnds。当每个子窗口的HWND传递给您的回调函数时,您可以调用GetClassName来查找其窗口类名称(例如" BUTTON")和GetWindowLong以查找其ID。