Все строки он хранит внутри себя в специальной структуре (заголовок я вообще не трогал), поэтому некоторые сообщения я подменил:
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?