Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.149.26.176] |
|
Сообщ.
#1
,
|
|||
|
В этом случае, созданное текстовое поле принимает все сообщения, но становится неактивным( в него нельзя ничего записать). Если же ставить обработчик событий так: SetWindowLong( apWindow, GWL_WNDPROC, Integer( @apEditProc ) ); То оно активно, НО ЕГО СООБЩЕНИЯ НЕ ОБРАБАТЫВАЮТСЯ. Хотелось бы чтобы оно было активным и обрабатывало Месаги(одновременно!). ? З.Ы. Я там по всякому пробовал менять, но.... |
Сообщ.
#2
,
|
|
|
В конце обработки очередного сообщения надо вызывать НЕ обработчик по умолчанию, а оригинальную процедуру окна, адрес которой получить с помощью GetWindowLong()
|
Сообщ.
#3
,
|
|
|
Типа так:
Result:=DefWindowProc(apWindow,Message,WParam,LParam ); ---- это убрать и написать так: SetWindowLong(apEdet, GWL_Proc, GetWindowLong(...)); Я правильно понял????????? |
Сообщ.
#4
,
|
|
|
Нет. В тот момент, когда вызывается GetWindowLong у тебя, там УЖЕ лежит адрес твоей процедуры.
Надо 1. Получить и сохранить в какой-то переменной старый адрес. 2. Только после етого установить свой обработчик 3. В конце обработки в своем обработчике вызвать процедуру по сохраненному старому адресу. |
Сообщ.
#5
,
|
|||
|
Не совсем в тему, но когда текст весь в один столбик (не форматирован) то разбираться очень тяжело, а по этому не очень хочется . |
Сообщ.
#6
,
|
|
|
2Петрович: Никак не получается отредактировать. Тама все нормально а как запостю так все в столбик(без пробелов).
|
Сообщ.
#7
,
|
|||
|
А ты кнопку 'CODE' топчи чаще |
Сообщ.
#8
,
|
|
|
Спасибо всем, разобрался!
... OldProc := Pointer(GetWindowLong(apEdit, GWL_WNDPROC)); ... Result:=CallWindowProc(OldProc, apEdit, Message, wParam, lParam); ... |