需要这个功能的起因是因为想要修改界面字体为等宽字体。
mfc所有控件的字体是顶层窗口设置的字体,vs创建的窗口字体默认是MS Shell Dlg(9),这种字体其实就是 Microsoft Sans Serif——常规——小五。
本来想用Windowswindows默认的字体是微软雅黑,看了一下记事本默认是微软雅黑——常规——小四,但是微软雅黑也不是等宽字体。
vs编辑器默认字体是新宋体,新宋体是等宽字体,换字体存在其余设备没有这种字体的风险,但是目前暂时用这种方法。
如果是vs界面拖拽出来的窗口,字体会继承顶层窗体字体,但是动态创建的窗口不会继承字体。
所以可以对话框中Create字体m_font,然后在initDialog中
CWnd *topWnd = GetTopWindow();
while (topWnd)
{
topWnd->SetFont(&m_font);
topWnd = topWnd->GetNextWindow();
}