Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2012, 18:38   #1
GydruS
 
Регистрация: 27.07.2011
Сообщений: 6
Вопрос Метода класса в качестве оконной процедуры формы

Добрый день, профи!
Как-то можно передать в SetWindowLong в качестве новой оконной процедуры метод класса?
Или как можно передать адрес экземлпяра класса в самописную оконную процедуру (которая не является методом класса)?

При попытке сделать таккод Pascal/Delphi
PHP код:
SetWindowLong(FOwnerForm.HandleGWL_WNDPROCLongint(@ClassWndProc)); 
компилятор ругается, что E2036: Variable requered
Понимаю, что физически адрес обычной функции и адрес метода экземпляра класса отличаются... Но какое-то решение должно же быть?

П.С. Мне это нужно, чтобы написать компонент, который будет модифицировать саму форму, если он сам размещен на форме...

Спасибо за ответы!!!
GydruS вне форума Ответить с цитированием
Старый 12.01.2012, 19:07   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
П.С. Мне это нужно, чтобы написать компонент, который будет модифицировать саму форму, если он сам размещен на форме...
там все проще, не надо этого.
сейчас найду свой же код, и выложу ссылку.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.01.2012, 19:12   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://programmersforum.ru/showthread.php?t=57228
вот, имейте в виду что конструктор компонента вашего должен быть override.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.01.2012, 12:11   #4
GydruS
 
Регистрация: 27.07.2011
Сообщений: 6
По умолчанию

Пепел Феникса, спасибо большое за ответ! посмотрел его, сравнил со своим кодом и понял, почему мой не работал )
но так же обратил внимание на пост про сво-во TControl.WindowProc - с его помощью я добился решения задачи, а код в общем стал более схожим по стилю, vcl'ным, если можно так сказать )
так же нашел еще пример в справке по дельфи: ms-help://embarcadero.rs_xe2/codeexamples/SubClassWndProc_(Delphi).html
GydruS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструктор класса не хочет принимать в качестве параметра адрес объекта другого класса Jugger Помощь студентам 3 05.01.2012 04:10
Подмена оконной процедуры, Как правильно завершить? eduard93 Win Api 0 08.09.2011 16:45
Что нужно передавать в качестве параметра обработчика нажатия кнопки при его вызове из другого метода? Вадим Мошев Общие вопросы Delphi 7 03.05.2011 14:31
Использование имени процедуры в качестве параметра другой процедуры Alexey355 Помощь студентам 1 23.04.2011 13:59
Передача метода класса в качестве параметра в другой метод Dmytry87 Общие вопросы C/C++ 0 12.11.2008 15:28