我在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? p>
提前致谢, 莱恩
答案 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,就像在代码片段中一样。