2012-01-05 70 views
0

我想在MFC视图类中显示一个简单的Unicode字符串。这个问题可以被简化为以下代码在MFC中显示阿拉伯语/ Unicode查看

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

的问题是,所述MFC窗口显示在下面的屏幕截图显示条代替阿拉伯字符。有人能说出我做错了什么吗?

First attempt to display Arabic

我使用VS 2003,如果该事项。

编辑:当我在设备上下文中选择了一个字体对象时,应用程序的行为发生了变化,但仍然不正确;它如果我使用了错误的代码页显示以下文字:

enter image description here

回答

2

这意味着所选字体没有字符可用。

您必须在设备上下文中选择具有所需字形的字体。

像这样也许:

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); 
+0

是的,字体似乎失踪,但现在看来,有一些问题的代码页;请参阅问题的编辑部分。这很奇怪,因为我使用Unicode,代码页应该是不相关的。 – Jaywalker 2012-01-05 16:51:13

+0

你用UNICODE定义编译你的项目吗?如果没有,您至少必须使用MBCS进行编译,否则您的应用程序无法正确处理这种Unicode字符,无论您使用哪种代码页 – Stefan 2012-01-05 20:00:29

+0

好。通过保存包含具有签名的UTF-8编码的字符串文字的.cpp文件可以解决这个问题。我一直使用的另一个选项,没有签名的UTF-8,没有工作! – Jaywalker 2012-01-06 10:16:10