почему эта строка состояния выводит искаженные китайские символы?

мой код для создания строки состояния находится здесь:

int statwidths[] = {300, -1};
HWND hStatus;

hStatus = GetDlgItem(hWnd, IDC_MAIN_STATUS);
SendMessage(hStatus, WM_SIZE, 0, 0);

hStatus = CreateWindowEx(0, STATUSCLASSNAME, NULL,
WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP, 20, 20, 20, 5,
hWnd, (HMENU)IDC_MAIN_STATUS, GetModuleHandle(NULL), NULL);
SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths);

//SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"Loading things...");
SetWindowText(hStatus, (LPCWSTR)"sdgsdfgd");

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

1

Решение

Существует проблема со следующей строкой

SetWindowText(hStatus, (LPCWSTR)"sdgsdfgd");

Так должно быть

SetWindowTextW(hStatus, L"sdgsdfgd");

Также все это зависит от того, является ли окно UNICODE или ANSI.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector