![](/img/trans.png)
[英]c++ can't get “wcout” to print unicode, and leave “cout” working
[英]Can't Get Visual C++ 6.0 Dialog Edit Control to Accept Unicode / Can't Get EDITTEXT Resource to Accept Unicode
我在Windows 7中使用Visual C ++ 6.0。我轉到“文件”->“新建”。 我選擇Win32應用程序並將其命名為HelloWorld。 出現“ Win32 Appliction步驟1之1”。 我選擇“典型的Hello World應用程序”。 VC創建了一個簡單的Hello World應用程序。
我選擇文件HelloWorld.cpp。 我將以下定義粘貼在HelloWorld.cpp文件的頂部:
#define UNICODE
#define _UNICODE
然后,我雙擊HelloWorld.rc。 我打開“對話框”項。 它的下面是IDD_ABOUTBOX。 我雙擊。 然后,我將EDITTEXT控件添加到對話框窗口。 我按ctrl-F5運行該程序。
我選擇關於,關於對話框將與EDITTEXT控件一起顯示。 然后,我轉到charmap.exe應用程序,並從Meiryo字體中選擇一個日語平假名字符。 我將其復制到剪貼板。
然后,將其粘貼到EDITTEXT控件中。 它顯示為“?” 問號。
我不知道該怎么辦。 如何獲得對話框編輯框以接受Unicode?
在此先感謝,瑞安
不要在源文件中定義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應該可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.