Вы создаете приложение в режиме Unicode; a char
не достаточно большой, чтобы держать символ UTF-16. Система типов экономит вас от возможной головной боли здесь, поймав это для вас. Или перейдите в режим ASCII (простое, но плохое решение), переключитесь на использование широких строк повсюду (раздражающее решение) или используйте предоставленные макросы для выбора во время компиляции на основе параметров сборки (еще более раздражающее, но наиболее правильное решение).
Это то, что этот фрагмент кода будет выглядеть с любой из указанных выше решений, реализованных:
HWND hwnd = GetForegroundWindow();
wchar_t wname[255];
GetWindowText(hwnd, wname, 255);
HWND hwnd = GetForegroundWindow();
TCHAR wname[255];
GetWindowTextW(hwnd, wname, 255);
Если вы решили построить Юникод приложение (которые вы должны), вы также должны помнить, чтобы использовать wmain
или _tmain
в зависимости от ситуации, а не обычная старая расточка main
. Потому что Windows.
Я думаю, вы найдете его 'wchar_t', а не wchat_t –