SetWindowText () / SetWindowTextA () и SetWindowTextW () действительно являются WM_SETTEXT, который является одним из немногих сообщений, подлежащих переводу кодовой страницы при создании многобайтового окна / окна Ansi.Это означает, что версии сообщений W и A отсутствуют.
Несмотря на это, Unicode легко отобразить в заголовке Vista / Win7, построенном как приложение Ansi / Multibyte.Все, что вам нужно сделать, это перехватить сообщение WM_SETTEXT в вашем окне и передать аргументы в DefWindowProcW () вместо обычного DefWindowProcA / DefWindowProc ().Это работает, потому что внутри все окна на самом деле являются юникодом.
Обратите внимание, что если вы просто передаете аргументы в DefWindowProcW (), то вы должны быть абсолютно уверены, что аргумент действительно указывает на строку wchar_t.
В моем собственном случае предполагается, что все строки символов состоят из символов UTF-8.Это означает, что нормальные строки ANSI все еще работают как прежде.Когда я перехватываю сообщение WM_SETTEXT в окне, я преобразую символ UTF-8 в wchar_t, используя MultiByteToWideChar (), а затем явно передаю результат в DefWindowProcW ().
Приятным побочным эффектом является то, что он также отображаетсимволы Юникод на панели задач тоже.
В XP есть проблема, из-за которой заголовок отображается неправильно, даже если панель задач есть.