Отображение арабского языка / Unicode в MFC View - PullRequest
0 голосов
/ 05 января 2012

Я пытаюсь отобразить простую строку Unicode в классе представления MFC. Задача может быть упрощена до следующего кода

CString arabic (_T("مرحبا العالم"));
pDC->TextOutW (50, 50, arabic);

Проблема в том, что в окне MFC вместо арабских символов отображаются полосы, как показано на снимке экрана ниже. Может кто-нибудь сказать, что я делаю не так?

First attempt to display Arabic

Я использую VS 2003, если это имеет значение.

РЕДАКТИРОВАТЬ: когда я выбрал объект шрифта в контексте устройства, поведение приложения меняется, но это все еще не правильно; отображаются следующие символы, как будто я использую неправильную кодовую страницу:

enter image description here

1 Ответ

2 голосов
/ 05 января 2012

Это означает, что выбранный шрифт не имеет доступных символов.

Вы должны выбрать шрифт, который содержит необходимые глифы, в контексте устройства.

что-то вроде этого может быть:

CFont font;
font->CreateFont(16,0,0,0,400,FALSE,FALSE,0,ANSI_CHARSET,
        OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
        ANTIALIASED_QUALITY,DEFAULT_PITCH|FF_SWISS,
        "Tahoma");
pDC->SelectObject(font);
...