Есть диалог MYDIALOG1, которому соответствует переменная m_MYDIALOG1 типа CMyDialog, где CMyDialog : public CDialog (то есть класс CMyDialog является потомком класса CDialog). На этом диалоге MYDIALOG1 расположены различные компоненты--кнопки (CButton), текстовые поля для ввода (CEdit), статические тексты (CStatic) и т.д.
Как программно получить доступ к компонентам, расположенным на диалоге MYDIALOG1? Как программно узнать, сколько компонентов расположены на диалоге MYDIALOG1? Как определить тип компонента--то есть как узнать, является ли этот тип CButton, CEdit, CStatic и т.д.?
1613 г. = 2024 г.
Re: Программный доступ к компонентам класса CDialog
Здравствуйте, RussianFellow, Вы писали:
RF>Есть диалог MYDIALOG1, которому соответствует переменная m_MYDIALOG1 типа CMyDialog, где CMyDialog : public CDialog (то есть класс CMyDialog является потомком класса CDialog). На этом диалоге MYDIALOG1 расположены различные компоненты--кнопки (CButton), текстовые поля для ввода (CEdit), статические тексты (CStatic) и т.д.
RF>Как программно получить доступ к компонентам, расположенным на диалоге MYDIALOG1? Как программно узнать, сколько компонентов расположены на диалоге MYDIALOG1? Как определить тип компонента--то есть как узнать, является ли этот тип CButton, CEdit, CStatic и т.д.?
Ситуация совсем бредовая или я что-то не понимаю. Выглядит так, как будто твой экземпляр окна изменяется какими-то сторонними процессами с удалением и созданием дочерних окон, а ты хочешь узнать, что у тебя еще осталось. Если ты действительно не владеешь своим окном, то есть утилита spy в открытых исходниках, посмотри как там сделано, EnumWindows решает твои проблемы, только сдается мне, что это не твой случай.
Здравствуйте, RussianFellow, Вы писали:
RF>Как программно получить доступ к компонентам, расположенным на диалоге MYDIALOG1?
m_MYDIALOG1.m_edit1?
RF>Как программно узнать, сколько компонентов расположены на диалоге MYDIALOG1?
WinAPI: EnumChildWindows?
RF>Как определить тип компонента--то есть как узнать, является ли этот тип CButton, CEdit, CStatic и т.д.?
WinAPI: GetClassName. Для MFC (ООП) должно быть что-то своё для определения класса по HWND (ну, кроме dynamic_cast<CStatic*>(CWnd::FromHandle(hwnd))).
Re: Программный доступ к компонентам класса CDialog
Здравствуйте, RussianFellow, Вы писали:
RF>Есть диалог MYDIALOG1, которому соответствует переменная m_MYDIALOG1 типа CMyDialog, где CMyDialog : public CDialog (то есть класс CMyDialog является потомком класса CDialog). На этом диалоге MYDIALOG1 расположены различные компоненты--кнопки (CButton), текстовые поля для ввода (CEdit), статические тексты (CStatic) и т.д.
RF>Как программно получить доступ к компонентам, расположенным на диалоге MYDIALOG1? Как программно узнать, сколько компонентов расположены на диалоге MYDIALOG1? Как определить тип компонента--то есть как узнать, является ли этот тип CButton, CEdit, CStatic и т.д.?
Перечисление элементов диалога
CWnd* pwndChild = GetWindow(GW_CHILD);
while (pwndChild)
{
// do something
pwndChild = pwndChild->GetNextWindow();
};
Re: Программный доступ к компонентам класса CDialog
Здравствуйте, RussianFellow, Вы писали:
RF>Есть диалог MYDIALOG1, которому соответствует переменная m_MYDIALOG1 типа CMyDialog, где CMyDialog : public CDialog (то есть класс CMyDialog является потомком класса CDialog). На этом диалоге MYDIALOG1 расположены различные компоненты--кнопки (CButton), текстовые поля для ввода (CEdit), статические тексты (CStatic) и т.д.
RF>Как программно получить доступ к компонентам, расположенным на диалоге MYDIALOG1? Как программно узнать, сколько компонентов расположены на диалоге MYDIALOG1? Как определить тип компонента--то есть как узнать, является ли этот тип CButton, CEdit, CStatic и т.д.?
Нафига это всё нужно для своего собственного диалога? Какая задача должна решаться?