Ошибка из-за юникода?
От: Submitter  
Дата: 24.08.12 14:20
Оценка:
Есть программа-клавиатурный хук, которая пишет в лог все нажатия клавиш.

В программе получаю заголовок активного окна так:

CString szWndText;
GetForegroundWindow()->GetWindowText(szWndText);


Все нормально до тех пор, пока заголовок содержит латинские буквы, как только содержится хоть один русский символ, то на нем строка обрывается.

Пробовал выводить в отладчике:

TRACE(_T("%s\n"), szWndText);


Если содержатся русские буквы, то пишет:

_CrtDbgReport: String too long or IO Error


Так понимаю косяк из-за юникода? Проект юникодный. Из-за чего такое может быть и как пофиксить?
Re: Ошибка из-за юникода?
От: c-smile Канада http://terrainformatica.com
Дата: 26.08.12 17:49
Оценка:
Здравствуйте, Submitter, Вы писали:

S>Так понимаю косяк из-за юникода? Проект юникодный. Из-за чего такое может быть и как пофиксить?


Проверять ::IsWindowUnicode(hwnd) и использовать GetWindowTextW (Unicode) или GetWindowTextA явным образом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.