2012-01-05 72 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