VC++ 改变控件字体大小颜色的方法.doc_第1页
VC++ 改变控件字体大小颜色的方法.doc_第2页
VC++ 改变控件字体大小颜色的方法.doc_第3页
VC++ 改变控件字体大小颜色的方法.doc_第4页
全文预览已结束

下载本文档

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

文档简介

改变控件字体大小颜色的方法在VC6.0中,不像其它开发工具那样能够轻易使用属性设置对象的各种状态,如文字颜色、背景等等使用OnCtlColor(在MSDN中的解释是:当要画出一个子控件时,框架就调用这个成员函数。多数控件将这个消息发送到它们的父窗口(通常是一个对话框),为使用正确的颜色画出控件而准备pDC),Ctrl+W打开ClassWizard,在Class Name下拉列表中选择要设置字体颜色的对话框标识,Message下拉列表中选择WM_CtlColor并双击,则会增加OnCtlColor成员函数,在“/ TODO: Change any attributes of the DC here”下面输入: if(IDC_=pWnd-GetDlgCtrlID() pDC-SetTextColor(RGB(255,0,0); /文字设置为红色代码中IDC_是你要设置控件的标识。/ CFont font;font.CreatePointFont(100, _T(宋体);/改变大小m_wndEditBox.SetFont(&font);/ /改变字体颜色/ 首先在自己需要设置界面的对话框上点击右键-在右侧属性栏中加入WM_CTLCOLOR消息-自动生成OnCtlColorHBRUSH CSingleBoxDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)HBRUSH hbr; if(CTLCOLOR_STATIC=nCtlColor & pWnd- GetDlgCtrlID()=IDC_STRY) /只对IDC_TOOL这一个静态文本控件起作用 pDC- SetBkColor(RGB(236,233,216); /背景色为窗口颜色pDC- SetTextColor(RGB(255,0,0); /前景色为红色hbr =CreateSolidBrush(RGB(236,233,216); /其它区域也为窗口颜色 else hbr=CDialog:OnCtlColor(pDC, pWnd, nCtlColor); return hbr; / / HBRUSH CMyDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);/ TODO: Change any attributes of the DC here/change the color of dialogif(nCtlColor=CTLCOLOR_DLG)pDC-SetBkColor(RGB(100,150,200);return m_hDlgFace;/change the color of staticif(nCtlColor=CTLCOLOR_STATIC)pDC-SetBkColor(RGB(100,150,200);pDC-SetTextColor(RGB(0,0,255);return m_hDlgFace;/EDIT控件只能用这种方法,我也不知道为什么 if(pWnd-GetDlgCtrlID()=IDC_EDIT1)pDC-SetBkColor(RGB(100,180,200);return m_hPage2Face;return hbr; / 很多人都觉得自己的程序的界面不那么美观,往往VC默认产生的对话框比较单调,因此很多人往往找到很多其它的控件对对话框进行美化修饰,例如给静态控件设置字体,设置背景颜色等等,其实这些完全可以由VC自己的WM_CTLCOLOR消息来完成!WM_CTLCOLOR消息,使你可以告诉Windows在画各种控件的背景时用什么刷子。在Windows要画控件的时候,它发送WM_CTLCOLOR给控件的父窗口。这是你改变控件背景的好机会。WM_CTLCOLOR消息用来完成对EDIT、STATIC、BUTTON等控件设置背景和字体颜色,其用法如下:1.首先在自己需要设置界面的对话框上点击右键-在右侧属性栏中加入WM_CTLCOLOR消息-自动生成OnCtlColor()函数,此函数可以对本对话框的控件的界面外观做修饰,用法如下:将类向导产生的函数做如下修改:HBRUSH CDialogColor:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) HBRUSH hbr = CDialog:OnCtlColor(pDC,pWnd, nCtlColor);/ TODO: Change any attributes of theDC here/设置显示字体CFont * cFont=new CFont;cFont-CreateFont(16,0,0,0,FW_SEMIBOLD,FALSE,FALSE,0, ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,Arial);/对特定的控件做修改switch(nCtlColor)case CTLCOLOR_STATIC: /对所有静态文本控件的设置pDC-SetBkMode(TRANSPARENT); /设置背景为透明pDC-SetTextColor(RGB(255,255,0); /设置字体颜色pWnd-SetFont(cFont); /设置字体HBRUSH B = CreateSolidBrush(RGB(125,125,255); /创建画刷return (HBRUSH) B; /返回画刷句柄case CTLCOLOR_EDIT: /对所有编辑框的设置pDC-SetBkMode(TRANSPARENT);pDC-SetTextColor(RGB(255,255,0);pWnd-SetFont(cFont);HBRUSH B = CreateSolidBrush(RGB(125,125,255);return (HBRUSH) B;default:return CDialog:OnCtlColor(pDC,pWnd, nCtlColor);注:case的类别有以下几种:CTLCOLOR_BTN 按钮控件CTLCOLOR_DLG 对话框CTLCOLOR_EDIT 编辑框CTLCOLOR_LISTBOX 列表框CTLCOLOR_MSGBOX 消息框CTLCOLOR_SCROLLBAR 滚动条CTLCOLOR_STATIC 静态文本2.你可能觉得对所有的控件使用统一的界面设置觉得不自由,其实VC同样可以对特定的ID的控件进行设置,方法如下:switch (pWnd-GetDlgCtrlID() /针对ID为IDC_CTL1、IDC_CTL2和IDC_CTL3的控件进行同样的设置case IDC_CTL1:case IDC_CTL2:case IDC_CTL3:pDC-SetBkMode(TRANSPARENT);pDC-SetTextColor(RGB(255,255, 0);pWnd-SetFont(cFont);HBRUSH B = CreateSolidBrush(RGB(125,125,255);return (HBRUSH) B;default:return CDialog:OnCtlColor(pDC, pWnd, nCtlColor);通过消息WM_CTLCOLOR我们可以改变对话框或一些特殊控件的背景颜色1、添加WM_CTLCOLOR消息映射。2、在CWnd:OnCtlColor里面作相应的处理HRESULT CWnd:OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)switch (nCtlColor) case CTLCOLOR_BTN: / Button control pDC-SetBkColor( RGB( 255, 0, 0) ); break; case CTLCOLOR_DLG: / Dialog box break; case CTLCOLOR_EDIT: / Edit control COLORREF bkColor = RGB(255,0,0);CRect rect; pWnd-GetClientRect(&rect);CBrush br; br.CreateSolidBrush(bkColor);pDC-FillRect(rect, &br);pDC-SetBkColor(bkColor); break; case CTLCOLOR_LISTBOX: / List-box control break; case CTLCO

温馨提示

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

评论

0/150

提交评论