Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 151
от 07.11.2005, 16:09

Администратор:Калашников О.А.
В рассылке:Подписчиков: 122, Экспертов: 19
В номере:Вопросов: 1, Ответов: 2


Вопрос № 28712: Здравствуйте! Я опять по поводу субклассирования. Определяю стандартную оконую функцию в модуле. Как теперь сделать так, чтобы эта функия вызвала другую, именно из той копии класса, которая субклассирует даное окно? Напремер: У меня ...

Вопрос № 28.712
Здравствуйте!
Я опять по поводу субклассирования.
Определяю стандартную оконую функцию в модуле. Как теперь сделать так, чтобы эта функия вызвала другую, именно из той копии класса, которая субклассирует даное окно?
Напремер:
У меня есть три контрола:

ContrA субклассирует окно 1
ContrB --////--- 2
ContrC --////--- 3

и NewWindowFunction (в стандартном модуле) если она будет вызвана как можно узнать какая именно копия котнрола ёё вызвала? И вызвать функцию именно того контрла, которая ёё вызвала?

Может ёще существует какой-нибудь другой алгоритм? А то я понатия не имею как можно его организовать.

А как еще можно субклассировать окно пренадлежащее другому процессу?
SetWindowLong конечно возвращае ошибку. Для этой цели пользовался специальным контролом, но хотелось бы «избавиться» от необходимости его присутствия для даных целей.
Отправлен: 01.11.2005, 20:37
Вопрос задал: Igor Vlad. (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Puma
Здравствуйте, Igor Vlad.!
Узнать какое окно вызвало функцию субклассирования можно через параметр hWnd передаваемый в функцию. Этот параметр являестя обязательным. Проверяя его через case можно вызвать нужную функцию контрола.
В приклепленном файле высылаю рабочий модуль для создания и работы с системыным меню, но немного модифицировав его можно использовать и для ловли сообщений от контролов.

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Куда б я ни пошел, оно со мною: на форумах, в e-mail иль в ICQ. Мое ИМХО могучею скалою поддержит точку зрения мою.

Ответ отправил: Puma (статус: Практикант)
Отправлен: 02.11.2005, 18:00

Отвечает: Залетин Виталий Викторович
Здравствуйте, Igor Vlad.!
Можно завести массив, в котором перед запуском сабклассинга поместить все hWnd контрола и во впемя сабкласса проверять параметр hWnd функции окна.
А чужое окно сабклассить... Может, хуками можно?
---------
Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (статус: 6-ой класс)
Отправлен: 05.11.2005, 15:18
Оценка за ответ: 5
Комментарий оценки:
Идея неплохая. Я уже встретил подобный пример.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Rambler's Top100 Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.basicvba
Архив рассылки
Отписаться
Вспомнить пароль

В избранное