如何为所有子窗口设置字体






4.62/5 (7投票s)
1999年12月8日

102226

1788
一种用于更改主应用程序中所有子窗口字体的技术
本文档展示了如何使用单行代码和回调函数来更改所有子窗口的字体。
其思路是创建一个回调函数,并将其传递给 Win32 API 函数 ::EnumChildWindows()
。 在应用程序的某个地方,创建一个全局 CFont
对象。 该对象的指针作为第三个参数传递给 EnumChildWindows()
。 此参数与子窗口的句柄一起传递给回调函数。 使用这两个参数,该函数更改子窗口的字体。
使用这种技术,可以很容易地
- 从
CMainFrame::OnCreate()
更改主框架窗口、其子视图和状态栏的字体。 - 从
OnInitDialog()
更改所有对话框控件的字体。
回调函数如下所示
// lParam is a pointer to CFont object
BOOL __stdcall SetChildFont(HWND hwnd, LPARAM lparam)
{
CFont *pFont = (CFont*)lparam;
CWnd *pWnd = CWnd::FromHandle(hwnd);
pWnd->SetFont(pFont);
return TRUE;
}
此回调函数从 OnCreate()
或 OnInitDialog()
中以以下方式使用
...
// g_Font is an object of type CFont or derived from CFont
EnumChildWindows(m_hWnd, ::SetChildFont, &g_Font);
...
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。