Неожиданный шрифт в CListCtrl?

У меня есть объект CListCtrl, и я использую:

AddData(m_listControl, 0, 0, "  Abc ");

Это отлично работает в более старой версии Visual Studio (2008). Однако в Visual Studio 2013 я использую набор символов UNICODE, и в приведенном выше примере в поле управления списком отображается странный шрифт.

Подскажите, пожалуйста, как вставить (AddData или другим способом), чтобы CListCtrl отображал английский набор символов?


person user2859884    schedule 19.11.2014    source источник


Ответы (2)


Используйте ТЕКСТ("Abc"). Макрос TEXT() преобразует строки в Unicode или ASCII в зависимости от настроек компилятора.

person i486    schedule 19.11.2014
comment
Привет i486 Это проблема. Я не могу добавить _T(), так как компилятор жалуется: невозможно преобразовать аргумент 4 из «const wchar_t[29]» в «const char*». - person user2859884; 19.11.2014
comment
Кажется, CListCtrl - это только ANSI/ASCII, а не Unicode, и по этой причине вы получаете сообщение об ошибке. Обычно я не люблю MFC и предпочитаю чистый Win32 API. Вы можете переключить проект на MultiByte (не Unicode) или установить шрифт для CListCtrl. Третий способ — получить HWND для CListCtrl и использовать SendMesssage( hwndCtl, LVM_* ... для работы со строками Unicode. - person i486; 19.11.2014
comment
Кстати, что это за метод AddData? Я не могу найти его в MSDN. - person i486; 19.11.2014

Ну и зачем вы использовали это название:

"Неожиданный шрифт в CListCtrl?"

ваша проблема не имеет ничего общего со шрифтом.

Это также не имеет ничего общего с управлением списком. Это функция AddData, которая доставляет вам неприятности.

Я уверен, что в списке параметров четвертый аргумент определен как const char*. Вам придется изменить сигнатуру функции. Попробуйте LPCTSTR как тип. Затем следуйте ответу i486.

person JohnCz    schedule 19.11.2014