Windows API学习-创建自己的字体


前面无论是使用文本输出函数还是 static 控件,字体都是默认的,比较丑陋,我们完全可以自己创建更加炫酷的字体。

创建字体使用 CreateFont 函数,它的原型是:

上面的14个参数完全记住几乎不可能,下面是简单的说明,其他的“照猫画虎”即可。

1) 参数 cWidth 和 cHeight 通常取负值,且高度为宽度的2倍,如 -18 和 -9,即可指定 13.5 |(H+W)/2| 磅的字体。

2) 对于字体粗细程度 cWeight,可以使用 FW_ 开头的宏定义;一般取 FW_NORMAL (400),此参数需要值的值域为 [0,1000]。

3) 对于参数 bItalic、bUnderline、bStrikeOut,直接使用 TRUE 或 FALSE 传值即可。

4) 对于字符集 iCharSet,一般可以直接使用 DEFAULT_CHARSET 让系统自动处理。
注意:字体也是一种 GDI 对象,使用完后也要在 WM_DESTROY 消息中删除。
创建完字体后并不能立即使用,还需要手动触发 WM_SETFONT 消息,让Windows 将当前字体设置为我们创建的字体。

发送消息使用 SendMessage 函数,它可以让我们在必要时主动向窗口发送各种消息,原型为:

这些参数和 WndProc 函数非常类似。没错,SendMessage 发送的消息就是由窗口过程来处理的。

设置字体的消息是 WM_SETFONT,只要向附加参数 wParam 传入 CreateFont 返回的句柄即可(需要转换到 WPARAM 类型)。请看下面的例子:

运行效果:
2.png