Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Предопределенные классы


Автор: Alex 3.3.2003, 03:33
Все знают, что в системе windows все классы строятся на базе предопределенных классах. В связи с этим может мне кто-нибудь сказать, как определить на каком именно предопределенном классе, построен известный мне класс?

Автор: dr.ZmeY 3.3.2003, 03:45
Ну посмотри иерархию классов VCL, есть такие таблицы...

Автор: dr.ZmeY 3.3.2003, 03:46
Какой именно тебе нужен?

Автор: Alex 3.3.2003, 17:35
Задача следующая есть некая программа, написанная на любом языке программирования при щелчке мыши над компонентом мне нужно определить, что это за компонент.

Автор: AntonSaburov 3.3.2003, 19:33
Ну вообщем Spy++ это неплохо умеет делать.

Автор: Medved 3.3.2003, 19:39
Используй метод ClassParent. Если ClassParent будет равняться nil, значит текущий класс - TObject.
TObject - это вершина иерархии классов.

Автор: Fantasist 4.3.2003, 06:51
Что-то вы о не понятном говорите. В windows нет никакой иерархии классов.

Автор: Vit 4.3.2003, 06:53
Если идёт речь о классах Delphi, то метод ClassName

Автор: Alex 4.3.2003, 17:34
Fantasist если нет иерархии, то, как тогда система определяет, как работать с тем или иным компонентом. Может я и не прав, и чего-то не понимаю, но может, кто ни будь объяснить мне как тот же WinSight32 определяет, что компоненту ComboBox пришло сообщение CBN_SELCHANGE, а не LBN_SELCHANGE, хотя они имеют один номер? Буду рад любому мнению любому совету. Можно давать ссылки на информацию, язык не важен пойму.
Речь я виду о классах windows, а не только Delphi.

Автор: Dayana 4.3.2003, 19:10
alex-co, существует целая теория о работе операционной системы Windows, о взаимодействиях объектов в ней, о событиях, об обработчике событий. И не надо путать иерархию классов или компонентов в какой либо среде программирования с существованием визуальных и невизуальных объектов в системе. Не система определяет как вести себя объекту и на какие сообщения и события реагировать, а сам объект определяет себя. Система занимается распределением сообщений по очередям. Это зависит от нескольких факторов: откуда пришло сообщение, кто на данный момент активен, ну и т.д. А уже сам объект знает реагировать ему или игнорировать сообщение и отправить его дальше. Вообщем и т.д. и т.п. Это описано во многих книгах по программированию, в том числе и по Delphi. Конкретно не назову литературу, не помню.... :-)

Автор: Alex 4.3.2003, 21:44
Еще мнения есть

Автор: dr.ZmeY 5.3.2003, 04:57
Приложение, использующее графический интерфейс с пользователем, должно иметь, как минимум, одно главное окно приложения. Для того, чтобы создать окно, необходимо вначале зарегистрировать класс окна. Класс окна определяет набор свойств, характерных для всех окон, создаваемых на базе данного класса. В Windows определены стандартные классы окон, используемые для создания стандартных органов управления. Стандартные классы не регистрируются приложением и для них не определяется функция окна, так как эти операции выполняются автоматически при загрузке Windows.
Для регистрации класса окна используется следующая функция API WIN32:
ATOM WINAPI RegisterClassEx ( const WNDCLASSEX FAR * lpwcx);
В качестве параметра эта функция получает дальний указатель на структуру WNDCLASSEX, которую должно сформировать приложение перед регистрацией класса окна.
Вот стандартные классы являющиеся вершинами иерархии:
TObject
TWinControl
TCommonDialog
Есть ещё и другие....
API WIN32 представляет собой совокупность более 1000 системных функций. В отличие от MS DOS, где для вызова функций ОС используется механизм программных прерываний, вызов системных функций WIN32 производится по их именам. При этом независимо от языка программирования имена функций, а также входные и выходные параметры остаются неизменными.
Ключевую роль в организации работы всех подсистем и приложений Windows играет система сообщений. Сообщение -это структура данных специального вида, которое получает окно для совершения каких-либо действий. Источником сообщений в операционной системе Windows является аппаратура, сама ОС и приложение. Процесс обработки сообщений в ОС Windows происходит следующим образом: при действии пользователя на устройство ввода активизируются программы-драйверы устройств ввода. Драйверы определяют какое именно действие совершил пользователь. Информацию о действии пользователя драйверы передают в поток необработанного ввода (RIT-raw input thread). Основной задачей потока необработанного ввода является определение приложения, для которого предназначено сообщение. Например, если пользователь произвел действие с мышью, то сообщение отправляется тому приложению над чьим окном находился курсор мыши при возникновении событий. Для определения приложений, которым предназначены сообщения клавиатуры используется понятие фокуса ввода(это место, где в данное время мигает курсор для ввода данных). Фокус ввода принадлежит тому окну, которое получит сообщение при действии пользователя на клавиатуру, из потока необработанного ввода сообщение попадает в виртуальную очередь потока. У каждого приложения имеется своя собственная виртуальная очередь потока. Из виртуальной очереди потока сообщение попадает в очередь сообщений потока, помимо сообщений от аппаратуры, в очереди сообщений потока содержатся сообщения от ОС и др. приложений. Прикладная программа извлекает сообщение из очереди сообщений потока и производит их обработку.

Автор: Medved 5.3.2003, 06:36
Цитата(Vit @ 4.3.2003, 09:53)
Если идёт речь о классах Delphi, то метод ClassName

Скорее ClassParent.
ClassName - имя текущего класса, а ClassParent - имя класса-родителя.

Автор: Alex 7.3.2003, 16:39
Всем спасибо я все нашел

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)