假设我有一个带有几个按钮的MFC对话框。 (例如“红色”,“蓝色”,“绿色”和“黄色”按钮)这些按钮都有ID,例如("IDC_BUTT_RED","IDC_BUTT_BLUE","IDC_BUTT_GREEN","IDC_BUTT_YELLOW")
鉴于我有一个CWnd对象,它引用了这些按钮所在的对话框窗口。有没有办法获得这些ID的列表?
我知道有一个CWnd::GetNextDlgGroupItem
方法,基于描述应该迭代一组控件。我尝试使用它,传入CWnd对象引用其中一个按钮,然后调用GetWindowText
方法进行检查,但它总是返回对自身的引用。
答案 0 :(得分:2)
您可以使用EnumChildWindows枚举所有对话框的子窗口。这是一个C API函数,因此您可以使用并获取HWND而不是CWnds。当每个子窗口的HWND传递给您的回调函数时,您可以调用GetClassName来查找其窗口类名称(例如" BUTTON")和GetWindowLong以查找其ID。