如何设置控件字体
这个问题很困扰。我知道使用 CWnd.SetFont(pFont),但现在问题如下
对话框创建多个控件,而且数量不定,可能需要对每个控件设置不同的字体。
如果每个控件字体都不一样,是否每个控件,每种字体,都要建立一个 CFont 成员变量?
加上需要设置1000种字体,要添加1000个成员变量啊?这个好像不太现实吧?
如果多个控件共用一个 CFont ,这个似乎也不行,因为第一个控件 SetFont()后,第二个控件字体变量要改变字体大小或字体样式,要重新建立字体 CReateFont,而重新建立的字体,则第一个控件的字体就不起作用了,因为已经被第二个控件的字体覆盖了。界面一旦重绘,就发现字体不对了。
这个问题如何解决????
[解决办法]
你本来就有1000种字体,所以创建1000次是肯定需要的。
无非你是觉得1000个成员变量太多。其实你为什么要保存为成员变量呢?
你完全可以一个成员变量也不要,在初始化对话框的函数里面:
for (i = 0 i < 1000; ++i)
{
::CreateFont
::SetFont
}
记得SetFont要用API,不要用CWnd的成员函数SetFont,创建字体也可以用API,如果非要用CFont的话,如下:
SetFont(..., font.Detach());
这是因为CFont是一个类,在析构的时候,会删除字体,调用Detach之后,就不会删除了。