簡體   English   中英

無法獲取Visual C ++ 6.0對話框編輯控件以接受Unicode /無法獲取EDITTEXT資源以接受Unicode

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM