София ответ правильный. Однако по умолчанию для проекта Visual Studio по умолчанию создается проект Unicode. Вы получите только первое письмо, если ваш проект Unicode, а не MBCS.
Вы изучили буфер, возвращенный из WM_GETTEXT, чтобы убедиться, что в нем есть вся строка?
Если нет, попробуйте объявить вашу выходную переменную как TCHAR * (быть универсальным) или как wchar_t * и посмотреть, какие результаты вы получите в буфере.
p.s. Нехорошо выделять память с помощью malloc и освобождать ее с помощью delete. Вы должны использовать либо пары malloc / free, либо пары new / delete. Еще более безопасный способ выделить буфер символов - использовать std :: string или использовать std :: wstring для широкой строки.
p.p.s Попробуйте убедиться, что настройки вашего проекта предназначены для многобайтового проекта, а не для проекта Unicode. Тогда все в ответе Софии сработает.
Еще одна вещь ... Просто используйте API GetWindowText () вместо вещи SendMessage. Вот почему это так, поэтому вам не нужно проходить через сложную процедуру приведения указателя к LPARAM или WPARAM. Это более безопасно для типов и даст вам ошибку времени компиляции (лучше, чем ошибки времени выполнения), если ваши типы не совпадают - особенно с Unicode / MBCS и wchar_t / char.