Цитата
А почему нет обращения к функции
Цитата
with wc do
begin
cbsize := sizeof( wc );
style := cs_hredraw or cs_vredraw;
lpfnwndproc := @windowproc; // Это что?
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Меню, WinAPI |
volvo |
Сообщение
#21
|
Гость |
Цитата А почему нет обращения к функции Цитата with wc do |
Client |
Сообщение
#22
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Цитата Чтобы Блокнот реагировал на твое меню, мало заменить само меню, надо еще заменить (ну, или расширить) оконную функцию Надо ловить нажатие кнопки меню и выполнять тоже действие только не для своей формы, а для блокнота? |
volvo |
Сообщение
#23
|
Гость |
Надо блокноту "подсунуть" обработчик событий, который будет реагировать на меню так, как ты хочешь, а не так, как заложено в Блокноте. Ибо из твоего приложения недоступно то, что нажимается в Блокноте, это разные процессы. Сообщения из его меню поступают в его очередь сообщений, а не в твою.
Гугл по темам "сабклассинг" и "суперклассинг" даст тебе информацию о том, как это делается (Сабклассинг - это "контроль сообщений окон путем модификации их оконной процедуры", суперклассинг - "создание и регистрация нового класса окна в системе") |
Client |
Сообщение
#24
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Гуглил, гуглил и нагуглил Тут описан сабклассинг своего же окна. Зачем?
И что значит result := defwindowproc( wnd, msg, wparam, lparam );Теорию вроде понял, буду разбираться с практикой ) Добавлено через 10 мин. А вот сабклассинг другого приложения пока не нашел (( Сообщение отредактировано: Client - |
volvo |
Сообщение
#25
|
Гость |
Странно... Первая ссылка Гугла выводит на Виноградный форум: "Сабклассинг и суперклассинг в Delphi для начинающих" и по ссылке - дальше: Задача о сабклассинге "чужих" окон прямым инжектом
|
Client |
Сообщение
#26
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
пасиб за ссылки)
получается что окнами могут быть и кнопка и эдит? и если получив хендл кнопки (пока не знаю как) то процедура SetWindowText заменит текст на кнопке? Сообщение отредактировано: Client - |
volvo |
Сообщение
#27
|
Гость |
Цитата получается что окнами могут быть и кнопка и эдит? Естественно. Все наследники TWinControl (я про VCL сейчас) - это окна. И Эдиты, и ТекстБоксы, и Мемо, и Чекбоксы, чего там только нет... Любой из этих объектов находится через FindWindowEx или EnumWindows/EnumChildWindows. На досуге можешь попробовать поиграться: сделай форму с десятком компонентов, а потом из другой программы найди все компоненты |
Client |
Сообщение
#28
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Цитата На досуге можешь попробовать поиграться Обязательно А что такое HWND и THANDLE? какая разница? И какая разница между PCHAR и STRING? |
volvo |
Сообщение
#29
|
Гость |
Цитата А что такое HWND и THANDLE? какая разница? Технически - никакой. И то и другое - переименование типа Cardinal. Но... Смысл: THandle - это дескриптор какого-то объекта, HWnd - это дескриптор окна. И желательно не путать, потому что кто знает, всегда ли они будут являться одним и тем же типом... По крайней мере, когда я пишу под WinAPI на Аде, компилятор мне не позволяет подставлять один тип вместо другого, там где нужен HWnd, принимается только HWnd, и ничего другого, никаких THandle-ов.О разнице String <-> PChar очень хорошо написано в Королевстве: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1206 Хм... По-моему, надо разделить тему. От "меню" уже перешли к общей информации о WinAPI |
Client |
Сообщение
#30
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Цитата Хм... По-моему, надо разделить тему. От "меню" уже перешли к общей информации о WinAPI ОК будет еще 1 темаСПАСИБО VOLVO ЗА ПОМОЩЬ! |
Текстовая версия | 18.04.2024 7:25 |