返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >VC++中的字体设置方法详解
  • 305
分享到

VC++中的字体设置方法详解

vc设置字体 2022-11-15 22:11:57 305人浏览 八月长安
摘要

Vc++中static text字体改变 窗口都有2个和字体有关的函数:CWnd::GetFont()和SetFont(CFont*, BOOL);1)CFont* pFont =

Vc++中static text字体改变
窗口都有2个和字体有关的函数:
CWnd::GetFont()和SetFont(CFont*, BOOL);
1)CFont* pFont = m_static.GetFont();

2)LOGFONT LogFont;
pFont->GetLogFont(&LogFont);

3)对LogFont直接操纵修改里面的字体选项
 
//如LogFont.lfUnderline = 1;设置下划线
 LogFont.lfHeight=30;       //字体大小设置
 strcpy(LogFont.lfFaceName, "楷体_GB2312");  //字体设置

4)pFont->Detach();
第四步的目的是将pFont里装有的HFONT解除关联,否则pFont无法调用紧接的Create函数。

5)pFont->CreateFontIndirect(&LogFont);
m_static.SetFont(pFont);

6)pFont->Detach();
必须再一次解除在pFont里装载的HFONT,原因是第5步已经将HFONT赋给了m_static。pFont的任务已完成,不应该持有HFONT资源,它也不能去销毁HFONT,因为m_static在使用这个HFONT,所以必须是Detach()来解除关联。

VC++中字体颜色的改变
在OnCtlColor函数中如下代码:


 HBRUSH CDlg_SignIn::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
 // TODO:  Change any attributes of the DC here
   if(nCtlColor == CTLCOLOR_STATIC)
       {
       if(pWnd->GetDlGCtrlID()== IDC_REGARD)
           {
               pDC->SetTextColor(RGB(255,0,0));
               pDC->SetBkColor(RGB(251, 247, 200));//设置文本背景色
               pDC->SetBkMode(TRANSPARENT);//设置背景透明                  
           }
       }
 // TODO:  Return a different brush if the default is not desired
 return hbr;


其他控件的宏定义为:
CTLCOLOR_BTN 按钮控件
CTLCOLOR_DLG 对话框
CTLCOLOR_EDIT 编辑框
CTLCOLOR_LISTBOX 列表控件
CTLCOLOR_MSGBOX 消息控件
CTLCOLOR_SCROLLBAR 滚动条控件
CTLCOLOR_STATIC 静态控件

VC中动态改变控件和对话框字体.
1
VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。

例子:
1、改静态文体的ID,如:IDC_STATIC1
2、添加一个Edit控件,建立一个关联的控件m_editControl。
3、在OnInitDialog中添加如下代码:

CFont * f;
     f = new CFont;
     f->CreateFont(16, // nHeight
     0, // nWidth
     0, // nEscapement
     0, // nOrientation
     FW_BOLD, // nWeight
     TRUE, // bItalic
     FALSE, // bUnderline
     0, // cStrikeOut
     ANSI_CHARSET, // nCharSet
     OUT_DEFAULT_PRECIS, // nOutPrecision
     CLIP_DEFAULT_PRECIS, // nClipPrecision
     DEFAULT_QUALITY, // nQuality
     DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
     _T("Arial")); // lpszFac   
     GetDlgitem(IDC_STATIC1)->SetFont(f);
     CWnd *cWnd = GetDlgItem(IDC_STATIC1);
     cWnd->SetFont(&font);
     cWnd->SetWindowTextW(L"设置需要的内容");

需要注意的是,这里我们使用的是CFont指针,而不是普通的CFont局部变量, 在非MFC程序,首先用CreateFont来建立一个字体句柄,然后再用SendMessage发给控件WM_SETFONT消息,将建立的字体句柄赋值过去,就可以了。 

2 但是整个对话框或窗口的字体的大小,使用对话框或窗口的SetFont()函数却没有任何的作用.可以在初始化时遍历每个控件分别设置来处理,但这里说另一种使用回调函数的简单方法:
:调用系统的api:::EnumChildwindows(). ,传入回调函数和重新定义的字体.(第一个参数不用管啊,本来就有啊)

1)在文档视图结构中CMainFrame::OnCreate().中调用::EnumChildWindows(). 实现所有窗口和子窗口字体改变

2) 在对话框的OnInitDialog(). 中调用::EnumChildWindows(). 改变对话窗上的所有控件.
回调函数如下:


/ 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;
}

使用1:

BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
::EnumChildWindows(m_hWnd, ::SetChildFont, (LPARAM)g_Font.GetFont());
return TRUE;  // return TRUE unless you set the focus to a control
  // EXCEPTION: OCX Property Pages should return FALSE
}

使用2:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
 if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
 return -1;      // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
 TRACE0("Failed to create status bar\n");
return -1;      // fail to create
 }
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
::EnumChildWindows(m_hWnd, ::SetChildFont, (LPARAM)g_Font.GetFont());
return 0;
}
(很好用,不像mfc中的那个垃圾setfont(),设置了对话框的没有一点反应!)

3 如何在mfc中实现,当系统的字体变大的时候,对话框上面的字体也相应的变大?

//IconFont
    LOGFONT logFont;
    int  size = sizeof(LOGFONT);
    bool isGood = SystemParametersInfo(SPI_GETICONTITLELOGFONT,size,&logFont,0);
    if(isGood == true)
{
 CFont * f;
f = new CFont;
const LOGFONT* pFont = new LOGFONT(logFont);
f->CreateFontIndirectW(pFont);
 //::EnumChildWindows(m_hWnd, ::SetChildFont, (LPARAM)f);
}
//other Font
NONCLIENTMETRICS ncm = new NONCLIENTMETRICS();               
bool isGood = SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), ref ncm, 0);
if (isGood == true)
{
LOGFONT logFont2;
//logFont2=ncm.lfntCaptionFont);//CaptionFont
 //logFont2 =ncm.lfntSMCaptionFont;//CaptionFont_Small
//logFont2 = ncm.lfntMenuFont;//MenuFont
//logFont2 = ncm.lfntStatusFont;//StatusFont
 logFont2 = ncm.lfntMessageFont;//MessageFont
CFont * f;
 f = new CFont;
const LOGFONT* pFont = new LOGFONT(logFont2);
 f->CreateFontIndirectW(pFont);
 //::EnumChildWindows(m_hWnd, ::SetChildFont, (LPARAM)f);
 }

以上是取得系统字体的大小,然后再调用上面的第二种方法。
窗体上的所有字体都会跟着系统字体的大小改变。

--结束END--

本文标题: VC++中的字体设置方法详解

本文链接: https://lsjlt.com/news/172569.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • VC++中的字体设置方法详解
    VC++中static text字体改变 窗口都有2个和字体有关的函数:CWnd::GetFont()和SetFont(CFont*, BOOL);1)CFont* pFont = ...
    99+
    2022-11-15
    vc 设置字体
  • html设置字体的方法
    这篇文章给大家分享的是有关html设置字体的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方便,适合初学前端开发者使用。2、可扩...
    99+
    2023-06-14
  • css字体的设置方法
    这篇文章给大家分享的是有关css字体的设置方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css字体的设置方法:【font-family】规定元素的字体系列,【font-family】可以把多个字体名称作为一个...
    99+
    2023-06-14
  • 详解iOS设置字体的三种方式
    有时候项目需要显示一些非系统的字体达到一些UI的效果,目前设置字体有三种方式,默认方式、bundle方式,coreText方式。 1 默认方式 这种方式就是正常的字体设置方式 l...
    99+
    2022-05-22
    ios 字体
  • css中设置字体颜色的方法
    这篇文章给大家分享的是有关css中设置字体颜色的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在CSS中,可以通color属性来设置字体颜色,只需要给包含字体文字的元素设置“color:颜色值;”样式即可。c...
    99+
    2023-06-14
  • css设置字体位置的方法
    这篇“css设置字体位置的方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“css设置字体位置的方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起来看...
    99+
    2023-06-06
  • css中font字体颜色的设置方法
    这篇文章给大家分享的是有关css中font字体颜色的设置方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网...
    99+
    2023-06-08
  • Pycharm怎么设置字体大小_Pycharm设置字体大小的方法
    首先打开pycharm,打开后点击左侧的file,如图: 在打开的工具栏中,点击Settings,如图: 在设置界面,点击左侧的Font选项,如图: 在右侧界面,根据需要设置字体大...
    99+
    2024-05-10
    pycharm
  • goland设置字体大小的方法
    goland中设置字体大小的方法:1、打开goland工具;2、打开“setting”设置界面;3、点击“Editor”;4、选择子菜单“Font”;5、最后设置Font中“Size”后面的数值进行设定页面字体大小即可。具体操作步骤:打开已...
    99+
    2024-04-02
  • 设置pycharm字体大小的方法
    这篇文章主要介绍了设置pycharm字体大小的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。设置pycharm字体大小的方法:首先打开Pycharm,点击左上角的file...
    99+
    2023-06-06
  • 设置python字体大小的方法
    小编给大家分享一下设置python字体大小的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python字体大小设置的方法:首先打开Python,在工具栏中单击...
    99+
    2023-06-06
  • css设置字体样式的方法
    这篇文章主要介绍了css设置字体样式的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计...
    99+
    2023-06-14
  • 设置html字体大小的方法
    这篇文章主要介绍设置html字体大小的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!html字体大小的设置方法:1、在font标签中使用size属性设置,语法“<font size="值"...
    99+
    2023-06-14
  • javascript设置字体颜色的方法
    这篇文章给大家分享的是有关javascript设置字体颜色的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。javascript设置字体颜色的方法:首先获取需要设置字体颜色的DOM元素对象;然后使用style对...
    99+
    2023-06-14
  • javascript设置字体大小的方法
    这篇文章主要介绍了javascript设置字体大小的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。javascript设置字体大小的方法:首先设置布局,并写两个按钮;然后...
    99+
    2023-06-14
  • html字体大小的设置方法
    小编给大家分享一下html字体大小的设置方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!html字体大小的设置方法:1、【font-size】后面加px值的方式...
    99+
    2023-06-14
  • CSS设置字体粗细的方法
    小编给大家分享一下CSS设置字体粗细的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在CSS中,可以通过font-weight属性来设置字体的粗细值;当该属性...
    99+
    2023-06-14
  • Android字体设置及Roboto字体使用方法
    本文实例讲述了Android字体设置及Roboto字体使用方法。分享给大家供大家参考。具体分析如下: 一、自定义字体 1.android Typeface使用TTF字体文件设置...
    99+
    2022-06-06
    方法 Android
  • css中设置标题字体大小的方法
    这篇文章主要介绍“css中设置标题字体大小的方法”,在日常操作中,相信很多人在css中设置标题字体大小的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css中设置标题字体...
    99+
    2024-04-02
  • css样式中设置字体大小的方法
    这篇文章将为大家详细讲解有关css样式中设置字体大小的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在css样式中,可以利用“font-size”属性来设置字体大小,只需给文本元素设置“font-si...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作