Функция GetWindowText
фактически отправляет в окно сообщение WM_GETTEXT
(hWndEditBox
).Поскольку вы используете функции *A
вместо функции *W
(в данном случае, в частности, CreateWindowExA
), ваш цикл обработки сообщений будет преобразовываться из широких символов в многобайтовые символы с использованием некоторой локали.
Ваше единственное решение здесь, по-видимому, заключается в изменении всей настройки окна - если ваш код, который требует ANSI, не связан с пользовательским интерфейсом, это должно быть возможно.Кроме того, вы можете заменить поле редактирования расширенными полями редактирования, которые предоставляют дополнительные сообщения (например, streaming ).
Возможно, вы захотите проверить, является ли этоGetWindowTextW
вызов или SetWindowTextW
вызов, который выполняет неправильное преобразование - если GetWindowTextW
работает правильно, вы можете преобразовать в многобайтовый формат, используя правильный языковой стандарт, прежде чем его установить.
Наконец, вы можетепопробуйте настроить кодовую страницу потока перед чтением текста, хотя это может вызвать другие проблемы.Обычный совет - использовать Unicode.
Источники: GetWindowText и этот комментарий от Рэймонда Чена в его блоге.