Программный доступ к компонентам класса CDialog
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 11.07.16 06:45
Оценка:
Есть диалог MYDIALOG1, которому соответствует переменная m_MYDIALOG1 типа CMyDialog, где CMyDialog : public CDialog (то есть класс CMyDialog является потомком класса CDialog). На этом диалоге MYDIALOG1 расположены различные компоненты--кнопки (CButton), текстовые поля для ввода (CEdit), статические тексты (CStatic) и т.д.

Как программно получить доступ к компонентам, расположенным на диалоге MYDIALOG1? Как программно узнать, сколько компонентов расположены на диалоге MYDIALOG1? Как определить тип компонента--то есть как узнать, является ли этот тип CButton, CEdit, CStatic и т.д.?
1613 г. = 2024 г.
Re: Программный доступ к компонентам класса CDialog
От: peterbes Россия  
Дата: 11.07.16 14:10
Оценка: +1
Здравствуйте, RussianFellow, Вы писали:

RF>Есть диалог MYDIALOG1, которому соответствует переменная m_MYDIALOG1 типа CMyDialog, где CMyDialog : public CDialog (то есть класс CMyDialog является потомком класса CDialog). На этом диалоге MYDIALOG1 расположены различные компоненты--кнопки (CButton), текстовые поля для ввода (CEdit), статические тексты (CStatic) и т.д.


RF>Как программно получить доступ к компонентам, расположенным на диалоге MYDIALOG1? Как программно узнать, сколько компонентов расположены на диалоге MYDIALOG1? Как определить тип компонента--то есть как узнать, является ли этот тип CButton, CEdit, CStatic и т.д.?


Ситуация совсем бредовая или я что-то не понимаю. Выглядит так, как будто твой экземпляр окна изменяется какими-то сторонними процессами с удалением и созданием дочерних окон, а ты хочешь узнать, что у тебя еще осталось. Если ты действительно не владеешь своим окном, то есть утилита spy в открытых исходниках, посмотри как там сделано, EnumWindows решает твои проблемы, только сдается мне, что это не твой случай.
Отредактировано 11.07.2016 14:12 peterbes . Предыдущая версия .
Re: Программный доступ к компонентам класса CDialog
От: b0r3d0m  
Дата: 11.07.16 14:11
Оценка: +1
Берите WinForms / WPF / Qt и не парьте мозг себе и другим.
Re: Программный доступ к компонентам класса CDialog
От: flаt  
Дата: 12.07.16 04:35
Оценка:
Здравствуйте, 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
От: SаNNy Россия  
Дата: 12.07.16 14:34
Оценка: 2 (1)
Здравствуйте, 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
От: Evgeniy Skvortsov Россия  
Дата: 12.07.16 14:39
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Есть диалог MYDIALOG1, которому соответствует переменная m_MYDIALOG1 типа CMyDialog, где CMyDialog : public CDialog (то есть класс CMyDialog является потомком класса CDialog). На этом диалоге MYDIALOG1 расположены различные компоненты--кнопки (CButton), текстовые поля для ввода (CEdit), статические тексты (CStatic) и т.д.


RF>Как программно получить доступ к компонентам, расположенным на диалоге MYDIALOG1? Как программно узнать, сколько компонентов расположены на диалоге MYDIALOG1? Как определить тип компонента--то есть как узнать, является ли этот тип CButton, CEdit, CStatic и т.д.?



Нафига это всё нужно для своего собственного диалога? Какая задача должна решаться?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.