Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Вывод символа из шрифта.


Автор: Leopard567 15.5.2006, 22:31
Необходимо вывести из шрифта определённый символ.

Шрифт: Times New Roman
код символа: 221Е

Делаю так:
 
Код

CListBox m_ctrlO;
CString Buf;
.................................
unsigned char f=0x221E;
Buf.Format("%c",f);
m_ctrlO.AddString(Buf);


И вместо знака бесконечности выводится квадратик.

Что я делаю не так? 

Автор: Pulse69 16.5.2006, 00:15
Я ,конечно, могу чего-нибудь не понимать, но unsigned char - это ANSI-кодировка,
а символ бесконечности - скорее всего из UNICODE. 

Автор: Earnest 16.5.2006, 07:41
Pulse69 прав. Ты пытаешься 2-байтовый символ засунуть в char.
Вообще не уверена, что тебе удастся вывести UNICODE-строку в не-UNICODE окно.  

Автор: Leopard567 16.5.2006, 16:11
Значит этот символ невозможно вывести в MFC приложении? 

Автор: Earnest 16.5.2006, 17:54
Почему же? Во-первых, нет проблем, если приложение будет UNICODE.
Если нет, попробуй конвертировать его в MultiByte: WideCharToMultiByte. 

Автор: Leopard567 16.5.2006, 18:39
А как сделать приложение UNICODE ? 

Автор: Earnest 16.5.2006, 19:09
1) Поставить опцию в свойствах проекта. В 7й студии это General->Character Set = Use Unicode Character Set
2) Использовать всюду "широкие" строки и символы, т.е. не "abcd", а "abcd"L. Еще лучше сразу приучиться всегда пользоваться T-макросами: TCHAR, LPTSTR, T("abcd"), _tcslen, etc. Тогда приложение будет компилироваться как в UNICODE, так и в MultiByte... 

Автор: Leopard567 16.5.2006, 22:37
Переделать всё приложение у меня не получилось.
Я перерисовал шрифт, вроде всё нормально.

Спасибо! smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)