虽然大多数字体选择操作涉及用户,但是有些情况不是这样。例如,开发人员可能希望在应用程序中使用唯一的字体来在控件窗口中绘制文本。要选择适当的字体,应用程序必须能够确定哪些字体可用,创建描述这些可用字体之一的逻辑字体,然后将该字体选择到适当的设备上下文中。
应用程序可以使用EnumFontFamilies功能枚举可用的字体。当应用程序必须确定给定家庭可用的字体时,这将非常有用。
一旦应用程序枚举了可用的字体并找到适当的匹配项,它应该使用字体枚举函数返回的值来初始化LOGFONT结构的成员。然后它可以调用CreateFontIndirect函数,传递给一个指向初始化的LOGFONT结构的指针。如果CreateFontIndirect功能成功,应用程序可以通过调用SelectObject功能来选择逻辑字体。
初始化LOGFONT结构的成员时,请务必在lfCharSet成员中指定特定的字符集。该成员在字体映射过程中很重要,如果此成员未正确初始化,结果将不一致。如果您在LOGFONT结构的lfFaceName成员中指定了一个字体名称,请确保lfCharSet值与lfFaceName中指定的字体的字符集相匹配。例如,如果要选择“MS Mincho”等字体,则必须将lfCharSet设置为预定义值SHIFTJIS_CHARSET。