2

Windows 7 で Visual C++ 6.0 を使用しています。[ファイル] -> [新規] に移動します。Win32 アプリケーションを選択し、HelloWorld という名前を付けます。「Win32 Appliction Step 1 of 1」が出てきます。「典型的な Hello World アプリケーション」を選択します。VC は単純な Hello World アプリを作成します。

ファイル HelloWorld.cpp を選択します。HelloWorld.cpp ファイルの先頭に次の定義を貼り付けます。

#define UNICODE
#define _UNICODE

次に、HelloWorld.rc をダブルクリックします。「ダイアログ」項目を開きます。その下に IDD_ABOUTBOX があります。それをダブルクリックします。次に、EDITTEXT コントロールをダイアログ ウィンドウに追加します。ctrl-F5 を押してプログラムを実行しました。

about を選択すると、about ダイアログが EDITTEXT コントロールと共に表示されます。次に、charmap.exe アプリケーションに移動し、Meiryo フォントからひらがなを選択します。クリップボードにコピーします。

次に、それを EDITTEXT コントロールに貼り付けます。「?」と表示されます。疑問符。

何をすべきかわかりません。ダイアログ編集ボックスで Unicode を受け入れるにはどうすればよいですか?

前もって感謝します、ライアン

4

1 に答える 1

0

ソース ファイルで UNICODE および _UNICODE を定義しないでください。プロジェクトレベルで定義する必要があります。VS選択プロジェクトと設定(Alt-7)のフォームメニュー。

ダイアログで [C++] タブを選択し、[カテゴリ] ドロップ ボックスから [プリプロセッサ] を選択します。下の編集ボックスに UNICODE と _UNICODE をコンマで区切って入力します。

現在、編集コントロールは、拡張文字セットを持たないシステム フォントをそのまま使用しています。編集コントロールのフォントを変更する必要があります。

ダイアログ WM_INITDIALOG ハンドラで、次の操作を行います。

case WM_INITDIALOG:
    {
        LOGFONT lf;
        ::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);
        HWND hEdit = GetDlgItem(hDlg, IDC_EDIT1);
        HDC hDC = GetDC(hEdit);

        _tcscpy(lf.lfFaceName, _T("Arial"));
        lf.lfHeight = -MulDiv(10, GetDeviceCaps(hDC, LOGPIXELSY), 72);

        //This creates the new font for the edit control
        HFONT hFont = CreateFontIndirect(&lf);

        //This sets the new font for the edit control
        SendMessage(hEdit, WM_SETFONT, (WPARAM)hFont, FALSE);
    }
    return TRUE;

すべてのフォント タイプに拡張文字セットがあるわけではないことに注意してください。コード スニペットのように Arial に設定するとうまくいくと思います。

于 2012-06-14T22:54:31.243 に答える