MFC静态编辑框如何改变字体的大小.doc_第1页
MFC静态编辑框如何改变字体的大小.doc_第2页
MFC静态编辑框如何改变字体的大小.doc_第3页
MFC静态编辑框如何改变字体的大小.doc_第4页
MFC静态编辑框如何改变字体的大小.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MFC编辑框如何改变字体的大小 方法一:步骤一:在Dlg类中增加一个类成员变量:CFont m_editFont; 注意:这里Font对象必须是类成员变量,不能是局部变量,否则会出现只改变了光标的大小,而不能改变字体的大小。步骤二:在OnInitDialog方法中增加下列语句:m_editFont.CreatePointFont(180, 宋体); m_editPlace.SetFont(&m_editFont); / 设置新字体方法二:在OnInitDialog方法中增加下列语句也可以实现:CFont* ptf=m_editPlace.GetFont(); / 得到原来的字体LOGFONT lf; ptf-GetLogFont(&lf); lf.lfHeight = 20; / 改变字体高度 strcpy (lf.lfFaceName, 隶书); / 改变字体名称 m_editFont.CreateFontIndirect(&lf); m_editPlace.SetFont(&m_editFont); / 设置新字体注意:If是个新的结构体变量,GetLogFont函数是实现将ptf中的LOGFONT结构体变量拷贝给If了,所以改变If不等于是改变ptf中的LOGFONT变量。所以下面必须加这两句来创建新的字体对象m_editFont.CreateFontIndirect(&lf); m_editPlace.SetFont(&m_editFont); / 设置新字体CFont font; LOGFONT lf; memset(&lf, 0, sizeof(LOGFONT); / zero out structure lf.lfHeight = 12; / request a 12-pixel-height font strcpy(lf.lfFaceName, Arial ); / request a face name Arial VERIFY(font.CreateFontIndirect(&lf); / create the font GetDlgItem(XXX)- SetFont(&font);下面的例子中,先取得编辑框本身的字体,然后改变其大小(需要注意的是,这种方法下,编辑框本身的字体如果不是TrueType型的话,字体大小的变化不是“连续”的,某些大小值的设定有可能不起作用): CYourDlg中增加成员变量CFont m_font; /这个绝对不能使临时变量 BOOL CYourDlg:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here CWnd *pEdit = GetDlgItem(IDC_EDIT1); CFont *pfont = pEdit- GetFont(); LOGFONT logfont; pfont- GetLogFont(&logfont); logfont.lfHeight = -18; m_font.CreateFontIndirect(&logfont); pEdit- SetFont(&m_font); return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE void CYourDlg:OnDestroy() CDialog:OnDestroy(); / TODO: Add your message handler code here m_font.DeleteObject(); 在OnInitDialog里: CFont *pSignNameFont; pSignNameFont = new CFont; pSignNameFont- CreateFont(30,20,0,0,150, FALSE,FALSE,0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, 宋体 (TrueType) ); GetDlgItem(IDC_EDIT2)- SetFont(pSignNameFont);LOGFONT lf; /定义字体结构 lf.lfWeight=10; /字体磅数=10 lf.lfHeight=56; /字体高度56 lf.lfWidth=20; /字体宽度20 lf.lfUnderline=FALSE; /无下划线 lf.lfStrikeOut=FALSE; /无删除线 lf.lfItalic=FALSE; /非斜体 lf.lfEscapement=0; lf.lfCharSet=DEFAULT_CHARSET; /使用缺省字符集 strcpy(lf.lfFaceName, 宋体 ); /字体名=system CFont myFont; /定义字体对象 myFont.CreateFontIndirect(&lf); /创建逻辑字体 然后在你需要改的情况下 .- SetFont(&myFont);如何更改static控件的字体大小(2010-04-26 22:21:07) 转载标签: 杂谈分类:C/C+学习你用的如果VC是5.0,5.0要从光盘上拷几个dll如果是6.0,也许要设置一下。在工作区相应的对话宽点右键,属性中有语言项,选择Chinese(P.R.C)就可以了。更改字体,首先改变你的static控件的ID,然后GetDlgItem(IDC_YOURSTATIC)-SetFont(&font);不支持汉字,可能是没有拷贝appwzchs.dll附:控件字体颜色修改相关很多人定义了基于MFC的程序项目,当设计界面使用控件时,却不知道如何对各控件进行字体与颜色的设计;其实这些修改是需要动手添加代码的,这方面的修改在控件属性里是没有现成的,这不同于.net定义的项目,它的是有直接属性修改的。1、改变对话框的底色在对话框的类中添加一个 private : CBrush m_brush;的成员变量。在类的构造函数中添加如下代码:m_brush.CreateSolidBrush(RGB(0,0,255); /初始化为蓝色为对话框添加一个WM_CTLCOLOR消息响应函数,专门为控件着色的消息响应函数,代码如下:HBRUSH CSettingDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);/return hbr;return m_brush;当然,.h文件里也要对函数进行预定义的;此时,该对话框的背景色已经全为蓝色了。2、如果我们要设置某一个对话框控件的底色和文字颜色时只要将上面return m_brush;改为:if (pWnd-GetDlgCtrlID()=IDC_LINE_STYLE) pDC-SetTextColor(RGB(0,255,0); /pDC-SetBkMode(TRANSPARENT); pDC-SetBkColor(RGB(255,0,0); return m_brush;return hbr;注意如果要设置单行EDIT的文字背景色,需要使用SetBkColor设置,而SetBkMode即使为透明,文字的背景仍为系统的默认色。按钮控件好像不能实现,大家可以试试,是不是按钮真的不能实现这些颜色变化。3、利用上面的原理,在对话框控件响应OnPaint消息时,将一个静态文本显示所设置字体的文字。添加一个静态文本框,改名为IDC_TEXT。添加一个字体成员变量 private: CFont m_font;在对话框的构造函数中对字体进行初始化: m_font.CreatePointFont(200,华文行楷);在2的return hbr;之前加入如下代码:if (pWnd-GetDlgCtrlID()=IDC_TEXT) pDC-SelectObject(&m_font);注意,因为OnPaint消息响应函数是在控件被绘制之前触发的,它所返回的HBRUSH画刷句柄,便携带了我们所设置的这些属性。此时,静态文本框的字体就变为你所需要的那种字体了。4、如果要改变OK按钮的文字颜色,靠上面的方式是不行的。我们需要创建一个新的从CButton类继承的CTestBtn类,并添加一个类的DrawItem的虚函数,类与虚函数都可以用向导来定义,加入以下代码:/ TODO: Add your code to draw the specified item UINT uStyle = DFCS_BUTTONPUSH; / This code only works with buttons. ASSERT(lpDrawItemStruct-CtlType = ODT_BUTTON); / If drawing selected, add the pushed style to DrawFrameControl. if (lpDrawItemStruct-itemState & ODS_SELECTED) uStyle |= DFCS_PUSHED; / Draw the button frame. :DrawFrameControl(lpDrawItemStruct-hDC, &lpDrawItemStruct-rcItem,DFC_BUTTON, uStyle); / Get the buttons text. CString strText; GetWindowText(strText); / Draw the button text using the text color red. COLORREF crOldColor = :SetTextColor(lpDrawItemStruct-hDC, RGB(255,0,0); :DrawText(lpDrawItemStruct-hDC, strText, strText.GetLength(),&lpDrawItemStruct-rcItem, DT_SINGLELINE|DT_V

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论