如何设置Unicode控件的字体?

如何设置Unicode控件的字体?,c,winapi,C,Winapi,为了设置ANSI控件的字体,我创建了一个HFONT对象,并通过SendMessage将其发送到该控件。这是我装箱HFONT对象的方式: 我相信除了第9个参数外,Unicode控件的所有参数都是相同的。对于ANSI控件,此参数是ANSI_字符集,但对于Unicode控件,它应该是什么?讨论Unicode以及如何使用它实现代码。第一个要求是定义UNICODE,以便通用Windows API将解析为UNICODE版本。 在您的示例中,您声明: 我相信除了第9个参数外,Unicode控件的所有参数都是相

为了设置ANSI控件的字体,我创建了一个HFONT对象,并通过SendMessage将其发送到该控件。这是我装箱HFONT对象的方式:

我相信除了第9个参数外,Unicode控件的所有参数都是相同的。对于ANSI控件,此参数是ANSI_字符集,但对于Unicode控件,它应该是什么?

讨论Unicode以及如何使用它实现代码。第一个要求是定义UNICODE,以便通用Windows API将解析为UNICODE版本。 在您的示例中,您声明: 我相信除了第9个参数外,Unicode控件的所有参数都是相同的。 不正确,因为最后一个参数必须是Unicode字符串

在代码示例中,执行以下操作:

#define UNICODE  //place in project visible .h file
更改:

HFONT hFont = CreateFont(13, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Tahoma");
致:

下面是函数CreateFontpay to DEFAULT_CHARSET中使用的预定义列表:


这个站点可能有帮助:CreateFont在C和C++中都是适用的,所以,这是与C字符集有关的。过去2年中,字符集已经不相关,只使用Debug THARCSET。@ Hans Passant是否应该使用Debug THARCSET同时用于ANSI控制和Unicode控件?停止使用ANSI API,和传递默认字符集。@David Heffernan我没有使用ANSI API,但我想知道如果我使用了,我应该为这个参数传递什么值。我问这个问题是因为我不知道我应该为Unicode控件选择什么值。不是所有东西都不是第一个ANSI,列表中较低的Unicode?默认字符集设置为基于当前系统区域设置的值。例如,当系统区域设置为English United United时,它被设置为ANSI_字符集。如果它被设置为另一个国籍,它将适应。你试过了吗?这可能会有帮助。@Ryker看起来有点像你在不知道答案的情况下回答了这个问题answer@DavidHeffernan-这里真正的问题是,包括提问者在内,还没有人发现真正的问题。如果有,得到准确答案的可能性将大大增加。事实上,考虑到阿莫菲斯提出的事实,我尽了最大努力。

HFONT hFont = CreateFont(13, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Tahoma");
HFONT hFont = CreateFont(13, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Tahoma");
                                                                        ^^^^^^^^^^^^                                                                                       ^^^^^^^^