2012-01-05 6 views
0

MFCビュークラスで単純なUnicode文字列を表示しようとしています。問題は、次のコードMFCビューでアラビア語/ Unicodeを表示

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

に簡略化することができる問題は、以下のスクリーンショットに示すように、MFCのウィンドウは、バーの代わりに、アラビア文字が表示されていることです。誰かが私が間違っていることを伝えることができますか?

First attempt to display Arabic

ことが重要ならば、私はVS 2003を使用しています。

EDIT:デバイスコンテキストでフォントオブジェクトを選択すると、アプリケーションの動作は変わりますが、それでもまだ正しくありません。私は間違ったコードページを使用していたかのように、次の文字が表示されます。

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

+0

UNICODEを定義してプロジェクトをコンパイルしますか?そうでない場合は、少なくともMBCSを定義してコンパイルする必要があります。そうしないと、使用するコードページに関係なく、そのようなUnicode文字は正しく処理されません。 – Stefan

+0

OK。これは、encoding:UTF-8という文字列リテラルを含む.cppファイルを署名付きで保存することで修正されました。私が使っていたもう1つのオプション、UTF-8は署名なしで動作しませんでした! – Jaywalker

関連する問題