gpt4 book ai didi

windows - 如何为通过 CreateWindow 创建的窗口指定字体?

转载 作者:可可西里 更新时间:2023-11-01 12:36:23 35 4
gpt4 key购买 nike

我正在使用纯 Win32 API(RegisterClass 和 CreateWindow 函数)创建窗口。如何为窗口指定一种字体而不是系统定义的字体?

最佳答案

当您创建自己的窗口类时,您有责任自己管理字体。此任务将分为四个部分:

  1. 创建窗口时(即当您处理 WM_CREATE 时),使用 CreateFont()CreateFontIndirect()获取要在窗口中使用的字体的 HFONT。您需要将此 HFONT 与您为窗口类的每个实例保留的其他数据一起存储。您可以选择让您的窗口类句柄 WM_GETFONTWM_SETFONT同样,但顶级窗口通常不需要它(如果您正在创建控制窗口类,您将需要处理 WM_SETFONT,因为对话框管理器会发送该消息)。
  2. 如果您的窗口有任何包含文本的子窗口,只要您的窗口字体发生变化,就向每个子窗口发送一个 WM_SETFONT 消息。所有常见的 Windows 控件都处理 WM_SETFONT。
  3. 当您绘制窗口的内容时(通常是响应 WM_PAINT 消息),使用 SelectObject() 选择您的 HFONT 到设备上下文中绘制文本之前的函数(或使用诸如 或 GetTextMetrics() 之类的文本函数)。
  4. 当窗口被销毁时(即当您处理 WM_DESTROY 时),使用 DeleteObject()释放您在步骤 1 中创建的字体。请注意,如果您选择在窗口中处理 WM_SETFONT,请不要删除您在 WM_SETFONT 处理程序中收到的字体对象,正如发送消息的代码所期望的那样保留该句柄的所有权。

关于windows - 如何为通过 CreateWindow 创建的窗口指定字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/221411/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com