IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Winapi опять воду мутит
TarasBer
сообщение 25.01.2012 15:35
Сообщение #1


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Суть такова. Я написал свой аналог EDIT.
Все строки он хранит внутри себя в специальной структуре (заголовок я вообще не трогал), поэтому некоторые сообщения я подменил:


WM_GETTEXTLENGTH: begin
Result := TextLength(H); // H:HWND - первый параметр
Exit;
end;
WM_GETTEXT: begin
CopyText(H, W, PChar(L)); // W:WPARAM; L:LPARAM - 3 и 4 параметры
Exit;
end;


(это функции, которые возвращают суммарную длину строк из специальной структуры и копируют строки в подставляемый буфер)
И решил его проверить.

Почему-то функция, что берёт текст из него, возвращает мусор.
Сначала я увидел, что L, который пришёл в функцию, нихрена не сопадает с указателем на буфер. И хотя в PChar(L) приходят верные символы, сама строка заполняется каким-то мусором. Потом я увидел, что если W=0, то в оконный буфер вообще ничего не приходит.
В общем у меня вопрос - что за хрень происходит с сообщением после SendMessage? По-моему, оно должно просто сразу вызвать оконную функцию, вместо этого происходит что-то непонятное.
Как вообще надо правильно отвечать на WM_GETTEXT?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 27.01.2012 13:21
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
и здесь Я РЕШАЮ, как обработать сообщение
Перед тем, как ТВОЕ окно обработает сообщение, ты нарушаешь контракт функции, чего ты от нее ждешь потом? Правильного функционирования? Обрабатывай, как хочешь, но перед этим необходимо, чтобы сообщение ДОШЛО до твоего окна. Пока контракт не выполнен - это может не произойти. Внимание, вопрос: "Кто виноват?" Ты, не соблюдая условия, которые тебе выставляет библиотека, или библиотека, "которая слишком тупая, и не понимает, что я хочу по-своему обработать стандартное сообщение"? Ну, обрабатывай... Если получишь...

Сообщение отредактировано: IUnknown - 27.01.2012 13:22
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 3:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"