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

RusFAQ.ru: Win API


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

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

Выпуск № 392
от 11.02.2007, 18:05

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


Вопрос № 74445: Здравствуйте. Использую диалог, как основное окно программы. Как нажатый ТАБ в расположенном на диалоге rich rdit'е передать ему? В справке написано, что сообщение WM_GETDLGCODE посылается контролу, и есть возможность, возвратив соответствующее з...

Вопрос № 74.445
Здравствуйте.
Использую диалог, как основное окно программы. Как нажатый ТАБ в расположенном на диалоге rich rdit'е передать ему? В справке написано, что сообщение WM_GETDLGCODE посылается контролу, и есть возможность, возвратив соответствующее значение (DLGC_WANTTAB), препятствовать изменению фокуса на следующий элемент диалога. Но как и где обрабатываются сообщения контролам? Ни разу не приходилось этого делать, работал только с оконными процедурами. Думаю, можно воспользоваться хуком на сообщения, но это не желательно. Или же есть другие способы "нарисовать" ТАБ в edit'e по нажатию ТАБа? К слову хук на клавиатуру в программе предусмотрен, можно там перехватить, но что послать rich edit'у?
Спасибо.
Отправлен: 06.02.2007, 18:02
Вопрос задал: Vanes (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Tek
Здравствуйте, Vanes!
На мой взгляд в случае необходимости обрабатывать сообщения контролу наилучшим выходом будет подмена оконной процедуры контрола (ведь контрол это тоже окно).
Осуществляется следующим образом:
1. Описываем новую оконную процедуру:
LONG WINAPI NewWndProc(HWND, UINT, WPARAM, LPARAM)
2. Подмена процедуры, запоминание указателя на стандартную
WNDPROC lpfnWndProc = (WNDPROC)SetWindowLong(hwnd, GWL_WNDPROC, (LONG)NewWndProc)
3. В собственной оконной процедуре, вместо DefWindowProc используем CallWindowProc(lpfnWndProc , hwnd, msg, wparam, lparam)
Тогда вы в этой подменной процедуре сможете обрабатывать нужные сообщения, а не нужные отсылать в стандартную.

---------
WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 9-ый класс)
Ответ отправлен: 07.02.2007, 09:41
Оценка за ответ: 5
Комментарий оценки:
Благодарю. Работает.
Использовал первый вариант решения.


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.44 beta от 26.01.2007
Яндекс Rambler's Top100

В избранное