如何设置Unicode控件的字体?

时间:2015-03-31 13:23:40

标签: c winapi

要设置ANSI控件的字体,我创建一个HFONT对象并将其(通过SendMessage())发送到控件。这就是我创建HFONT对象的方式:

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");

我认为除第9个参数外,Unicode控件的所有参数都相同。对于ANSI控件,此参数为ANSI_CHARSET,但对于Unicode控件应该是什么?

1 个答案:

答案 0 :(得分:0)

This link 讨论了Unicode以及如何使用它实现代码。最初的要求是#define 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");

要:

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");
                                                                        ^^^^^^^^^^^^                                                                                       ^^^^^^^^  

来自 MSDN 以下是函数CreateFont()中使用的预定义列表(请注意DEFAULT_CHARSET):

网站可能会有所帮助: Programming with Unicode