无法获取Visual C ++ 6.0对话框编辑控件以接受Unicode /无法获取EDITTEXT资源以接受Unicode

时间:2012-06-14 11:23:01

标签: c++ windows visual-c++ unicode

我在Windows 7中使用Visual C ++ 6.0。我转到File-> New。我选择Win32应用程序并将其命名为HelloWorld。出现“Win32应用第1步”。我选择“典型的Hello World应用程序”。 VC创建了一个简单的Hello World App。

我选择文件HelloWorld.cpp。我粘贴在HelloWorld.cpp文件顶部的以下定义中:

#define UNICODE
#define _UNICODE

然后我双击HelloWorld.rc。我打开“对话框”项目。在它下面是IDD_ABOUTBOX。我双击那个。然后我将EDITTEXT控件添加到对话框窗口。我点击了ctrl-F5来运行该程序。

我选择about和about对话框与EDITTEXT控件一起显示。然后我转到charmap.exe应用程序并从Meiryo字体中选择日语平假名字符。我把它复制到剪贴板。

然后我将其粘贴到EDITTEXT控件中。它显示为“?”问号。

我不明白该怎么做。如何让对话框编辑框接受Unicode?

提前致谢, 莱恩

1 个答案:

答案 0 :(得分: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,就像在代码片段中一样。