【VC界面】如何设置整个程序的字体大小

时间:2023-01-04 20:20:24
我现在能实现某个控件上的字体大小,但是我想简洁的改变整个程序界面的字体大小,下面是我的程序:

CFont* font = GetFont();

if (font)
{
LOGFONT lf;
font->GetLogFont(&lf);
//lf.lfWeight = 1;
lf.lfHeight += 25;
lf.lfWidth += 6;
g_Font.CreateFontIndirect(&lf);
m_ListTest.SetFont(&g_Font,TRUE);
        }


其中,m_ListTest为一个List Control控件, 我的问题是,如何简单的将这个字体配置应用于整个程序的所有弹出界面,希望路过的大牛们,指点一二。。 谢谢了..

13 个解决方案

#1


在程序开始的时候就选入一个font



没试过!

#2


窗口资源保证都使用同一种字体。
高级的 可以利用hook 勾住WM_SETFONT 让它走你的逻辑

#3


引用 2 楼 allenhiman 的回复:
窗口资源保证都使用同一种字体。
高级的 可以利用hook 勾住WM_SETFONT 让它走你的逻辑

UP

#4


引用 2 楼 allenhiman 的回复:
窗口资源保证都使用同一种字体。
高级的 可以利用hook 勾住WM_SETFONT 让它走你的逻辑

正解 【VC界面】如何设置整个程序的字体大小

#5


我和楼主相反,我一直寻找保证每个部件的字体都不同,一直没找到方法

#6


确实是一个好想法。等待高手来

#7


BOOL CXXXApp::InitInstance() 中加入修改全局字体的代码即可.

// 修改默认字体 [2012-3-19 sxh]
//设置正常字体
LOGFONT lf;   
afxGlobalData.fontRegular.GetLogFont(&lf);   
afxGlobalData.fontRegular.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));     // using without style office 2007   
afxGlobalData.fontRegular.CreateFontIndirect(&lf);  

//设置加粗的字体 
afxGlobalData.fontBold.GetLogFont(&lf);   
afxGlobalData.fontBold.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));   
afxGlobalData.fontBold.CreateFontIndirect(&lf);

afxGlobalData.fontTooltip.GetLogFont(&lf);   
afxGlobalData.fontTooltip.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));   
afxGlobalData.fontTooltip.CreateFontIndirect(&lf);

#8


引用 7 楼 xiaohuh421 的回复:
BOOL CXXXApp::InitInstance() 中加入修改全局字体的代码即可.

C/C++ code?123456789101112131415161718192021// 修改默认字体 [2012-3-19 sxh]    //设置正常字体    LOGFONT lf;       afxGlobalData.fontRegular.GetLogFont……
【VC界面】如何设置整个程序的字体大小

#9


我都是挨个SendMessage WM_SETFONT 【VC界面】如何设置整个程序的字体大小

#10


遍历每个窗口控件,CWnd::SetFont()

#11


如果是对话框的话,就简单多了,你可以右键点属性里边就有font,点开设置就行了。呵呵。

#12


引用 7 楼 xiaohuh421 的回复:
BOOL CXXXApp::InitInstance() 中加入修改全局字体的代码即可.



C/C++ code
?



123456789101112131415161718192021

// 修改默认字体 [2012-3-19 sxh]     //设置正常字体     LOGFONT lf;        afxGlobalData.fontRegular.Ge……

这个可以更改menu和toolbar的字体

#13


引用 7 楼 xiaohuh421 的回复:
BOOL CXXXApp::InitInstance() 中加入修改全局字体的代码即可.

// 修改默认字体 [2012-3-19 sxh]
//设置正常字体
LOGFONT lf;   
afxGlobalData.fontRegular.GetLogFont(&lf);   
afxGlobalData.fontRegular.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));     // using without style office 2007   
afxGlobalData.fontRegular.CreateFontIndirect(&lf);  

//设置加粗的字体 
afxGlobalData.fontBold.GetLogFont(&lf);   
afxGlobalData.fontBold.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));   
afxGlobalData.fontBold.CreateFontIndirect(&lf);

afxGlobalData.fontTooltip.GetLogFont(&lf);   
afxGlobalData.fontTooltip.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));   
afxGlobalData.fontTooltip.CreateFontIndirect(&lf);

这种做法在系统更改主题时,字体会变大变难看

#1


在程序开始的时候就选入一个font



没试过!

#2


窗口资源保证都使用同一种字体。
高级的 可以利用hook 勾住WM_SETFONT 让它走你的逻辑

#3


引用 2 楼 allenhiman 的回复:
窗口资源保证都使用同一种字体。
高级的 可以利用hook 勾住WM_SETFONT 让它走你的逻辑

UP

#4


引用 2 楼 allenhiman 的回复:
窗口资源保证都使用同一种字体。
高级的 可以利用hook 勾住WM_SETFONT 让它走你的逻辑

正解 【VC界面】如何设置整个程序的字体大小

#5


我和楼主相反,我一直寻找保证每个部件的字体都不同,一直没找到方法

#6


确实是一个好想法。等待高手来

#7


BOOL CXXXApp::InitInstance() 中加入修改全局字体的代码即可.

// 修改默认字体 [2012-3-19 sxh]
//设置正常字体
LOGFONT lf;   
afxGlobalData.fontRegular.GetLogFont(&lf);   
afxGlobalData.fontRegular.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));     // using without style office 2007   
afxGlobalData.fontRegular.CreateFontIndirect(&lf);  

//设置加粗的字体 
afxGlobalData.fontBold.GetLogFont(&lf);   
afxGlobalData.fontBold.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));   
afxGlobalData.fontBold.CreateFontIndirect(&lf);

afxGlobalData.fontTooltip.GetLogFont(&lf);   
afxGlobalData.fontTooltip.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));   
afxGlobalData.fontTooltip.CreateFontIndirect(&lf);

#8


引用 7 楼 xiaohuh421 的回复:
BOOL CXXXApp::InitInstance() 中加入修改全局字体的代码即可.

C/C++ code?123456789101112131415161718192021// 修改默认字体 [2012-3-19 sxh]    //设置正常字体    LOGFONT lf;       afxGlobalData.fontRegular.GetLogFont……
【VC界面】如何设置整个程序的字体大小

#9


我都是挨个SendMessage WM_SETFONT 【VC界面】如何设置整个程序的字体大小

#10


遍历每个窗口控件,CWnd::SetFont()

#11


如果是对话框的话,就简单多了,你可以右键点属性里边就有font,点开设置就行了。呵呵。

#12


引用 7 楼 xiaohuh421 的回复:
BOOL CXXXApp::InitInstance() 中加入修改全局字体的代码即可.



C/C++ code
?



123456789101112131415161718192021

// 修改默认字体 [2012-3-19 sxh]     //设置正常字体     LOGFONT lf;        afxGlobalData.fontRegular.Ge……

这个可以更改menu和toolbar的字体

#13


引用 7 楼 xiaohuh421 的回复:
BOOL CXXXApp::InitInstance() 中加入修改全局字体的代码即可.

// 修改默认字体 [2012-3-19 sxh]
//设置正常字体
LOGFONT lf;   
afxGlobalData.fontRegular.GetLogFont(&lf);   
afxGlobalData.fontRegular.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));     // using without style office 2007   
afxGlobalData.fontRegular.CreateFontIndirect(&lf);  

//设置加粗的字体 
afxGlobalData.fontBold.GetLogFont(&lf);   
afxGlobalData.fontBold.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));   
afxGlobalData.fontBold.CreateFontIndirect(&lf);

afxGlobalData.fontTooltip.GetLogFont(&lf);   
afxGlobalData.fontTooltip.DeleteObject();   
lf.lfHeight = -12;   
lstrcpy(lf.lfFaceName, _T("宋体"));   
afxGlobalData.fontTooltip.CreateFontIndirect(&lf);

这种做法在系统更改主题时,字体会变大变难看