怎样修改mfc中的文字大小机及mfc 静态文本字体颜色色

共有 1154 人关注过本帖
标题:如何改变MFC中基于对话框的静态文本字体颜色:
等 级:论坛游民
帖 子:11
专家分:26
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:1&&&
如何改变MFC中基于对话框的静态文本字体颜色:
我是刚接触到VC++2005的新手,想试着改变MFC中基于对话框里面的 静态文本(static text) 显示的颜色,但我在属性中却找不到,我想知道是否可以改变其颜色;如果可以要怎么改。要用代码吗,如何写?
希望得到大家的帮助,谢谢!我是新手。
搜索更多相关主题的帖子:
等 级:版主
威 望:112
帖 子:2882
专家分:14282
&&得分:20&
处理 WM_CTLCOLOR 消息
if( nCtlColor == CTLCOLOR_STATIC ) // 对所有静态文本控件设置
// if( pWnd-&GetDlgCtrlID() == 某个ID ) // 对某个控件进行设置
&&& pDC-&SetTextColor( RGB(255,0,0) ); // 设置为红色
版权所有,并保留所有权利。
Powered by , Processed in 0.018657 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights ReservedMFC 改变static字体颜色、大小、背景颜色【自定义类】 - CSDN博客
新建一个MFC标准Dialog工程并生成一个CStatic的自定义类,我的类名为CColorStatic
定义必要变量
重载CColorStatic类中的=WM_CTLCOLOR事件,是有=,不是WM_CTLCOLOR事件
另外添加一些接口类函数
至此就结束了。
Dome 部分代码MFC ListControl 如何修改字体大小 如何使一行中的特定列颜色改变 - VC/MFC当前位置:& &&&MFC ListControl 如何修改字体大小 如何使一行中的MFC ListControl 如何修改字体大小 如何使一行中的特定列颜色改变&&网友分享于:&&浏览:193次MFC ListControl 怎么修改字体大小 怎么使一行中的特定列颜色改变MFC&ListControl&怎么修改字体大小&怎么使一行中的特定列颜色改变&
求大神指点,本人在线等,最好有源码发给我,谢了
------解决方案--------------------/index.php/wv/1550
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有怎么修改MesageBox弹出来的字体颜色和大小 - VC/MFC当前位置:& &&&怎么修改MesageBox弹出来的字体颜色和大小怎么修改MesageBox弹出来的字体颜色和大小&&网友分享于:&&浏览:44次如何修改MesageBox弹出来的字体颜色和大小?如何修改MesageBox弹出来的字体颜色和大小?------解决方案--------------------通过钩子将MesageBox弹出来的对话框子类化,然后处理WM_CTLCOLORSTATIC消息用GetDlgItem获取控件句柄(控件ID是固定的,可以用Spy++看一下)发WM_SETFONT消息就可以设置字体了
------解决方案--------------------自己用个模态对话框不是更简单吗?
------解决方案--------------------嗯
新建一个对话框,然后消息就用新建的对话框来显示:
在主程序头文件中加入新对话框的类名,然后创建一个实例来控制打开就可以了
------解决方案--------------------自己写个窗口不得了。
------解决方案--------------------重载APP类的DoMessageBox
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有MFC 可以设置背景色、字体、字体颜色、透明背景的 Static 静态文本控件 - DoubleLi - 博客园
MFC库里没有符合这个条件的控件,于是我自己写了一个,初步测试有效。注:可以设置透明背景,但还不能做到透明度设置(如50%透明度)& & & & 如果设置了背景色,就不保留透明背景& & & & 默认背景色是透明的[cpp]&//&设置背景色(若clr为CLR_NONE,则背景透明)&&void&SetBackgroundColor(COLORREF&clr){m_clrBackground&=&}&&//&设置文字前景色&&void&SetTextColor(COLORREF&clr){m_clrText&=&}&&//&设置文字字体&&void&SetFont(CString&strFaceName,&LONG&nHeight);&&如何使用:& & 1.先将RichStatic.h和RichStatic.cpp添加入工程& & 2.对话框添加Static控件后,增加一个控件变量,类型设置为CRichStatic(或手动添加,在对话框类DoDataExchange中添加DDX_Control)源码:[cpp]&#pragma&once&&&&&&//&CRichStatic&&&&class&CRichStatic&:&public&CStatic&&{&&&&&&DECLARE_DYNAMIC(CRichStatic)&&&&public:&&&&&&CRichStatic();&&&&&&virtual&~CRichStatic();&&&&&&&&protected:&&&&&&afx_msg&BOOL&OnEraseBkgnd(CDC*&pDC);&&&&&&afx_msg&LRESULT&OnSetText(WPARAM,LPARAM);&&&&&&DECLARE_MESSAGE_MAP()&&&&&&virtual&void&PreSubclassWindow();&&&&private:&&&&&&COLORREF&m_clrT&&&&&&&&&&//&文字前景色&&&&&&COLORREF&m_clrB&&&&//&文字背景色&&&&&&CFont&*m_pTextF&&&&&&&&&&//&文字字体&&&&&&CBitmap&m_B&&&&&&&&&&&&&&&//&保存背景用的位图对象&&public:&&&&&&//&设置背景色(若clr为CLR_NONE,则背景透明)&&&&&&void&SetBackgroundColor(COLORREF&clr){m_clrBackground&=&}&&&&&&//&设置文字前景色&&&&&&void&SetTextColor(COLORREF&clr){m_clrText&=&}&&&&&&//&设置文字字体&&&&&&void&SetFont(CString&strFaceName,&LONG&nHeight);&&&&public:&&&&&&virtual&void&DrawItem(LPDRAWITEMSTRUCT&/*lpDrawItemStruct*/);&&};&&[cpp]&//&RichStatic.cpp&:&实现文件&&//&&&&&&#include&"stdafx.h"&&#include&"RichStatic.h"&&&&&&&&&&//&CRichStatic&&&&&&IMPLEMENT_DYNAMIC(CRichStatic,&CStatic)&&&&&&CRichStatic::CRichStatic():&&&&&&m_clrText(0),&m_clrBackground(CLR_NONE),&m_hFont(NULL),&m_selfCreated(FALSE),&&&&&&&m_xAlignment(X_LEFT),&m_yAlignment(Y_TOP)&&{&&&&&&}&&&&&&CRichStatic::~CRichStatic()&&{&&&&&&if&(m_selfCreated&&&&m_hFont&!=&NULL)&&&&&&{&&&&&&&&&&DeleteObject(m_hFont);&&&&//&若字体对象为对象自己创建并且不为NULL,则销毁掉以释放内核对象&&&&&&}&&}&&&&&&&&&&BEGIN_MESSAGE_MAP(CRichStatic,&CStatic)&&&&&ON_MESSAGE(WM_SETTEXT,OnSetText)&&&&&ON_WM_ERASEBKGND()&&END_MESSAGE_MAP()&&&&&&&&&&&&&&//&CRichStatic&消息处理程序&&&&&&void&CRichStatic::DrawItem(LPDRAWITEMSTRUCT&lpDrawItemStruct)&&{&&&&&&if&(m_clrBackground&!=&CLR_NONE)&&&&//&若背景色不为CLR_NONE(CLR_NONE表示无背景色),则绘制背景&&&&&&{&&&&&&&&&&RECT&&&&&&&&&&&GetWindowRect(&rect);&&&&&&&&&&CBrush&&&&&&&&&&&brush.CreateSolidBrush(m_clrBackground);&&&&&&&&&&::SelectObject(lpDrawItemStruct-&hDC,&brush.m_hObject);&&&&//&设置画刷颜色&&&&&&&&&&::SelectObject(lpDrawItemStruct-&hDC,&GetStockObject(NULL_PEN));&&&&//&设置笔为空笔(不绘制边界)&&&&&&&&&&Rectangle(lpDrawItemStruct-&hDC,&0,&0,rect.right&-&rect.left,&rect.bottom&-&rect.top);&&&&&&}&&&&&&&&&&CString&strC&&&&//&标题文字&&&&&&GetWindowText(strCaption);&&&&&&if&(m_hFont&!=&NULL)&&&&&&{&&&&&&&&&&::SelectObject(lpDrawItemStruct-&hDC,&m_hFont);&&&&&&}&&&&&&&&&&//&计算输出字串的横纵坐标&&&&&&&int&x&=&0,&y&=&0;&&&&&&if&(X_LEFT&!=&m_xAlignment&||&Y_TOP&!=&m_yAlignment)&&&&//&不是左对齐或不是顶对齐&&&&&&{&&&&&&&&&&CDC&*pDC&=&CDC::FromHandle(lpDrawItemStruct-&hDC);&&&&&&&&&&CRect&&&&&&&&&&&GetWindowRect(&crect);&&&&&&&&&&CSize&size&=&pDC-&GetTextExtent(strCaption);&&&&&&&&&&if&(X_RIGHT&==&m_xAlignment)&&&&//&右对齐&&&&&&&&&&{&&&&&&&&&&&&&&x&=&crect.Width()&-&size.&&&&&&&&&&}&&&&&&&&&&else&if&(X_CENTER&==&m_xAlignment)&&&//&X居中对齐&&&&&&&&&&{&&&&&&&&&&&&&&x&=&(crect.Width()-&size.cx)&/&2;&&&&&&&&&&}&&&&&&&&&&&&&&if&(Y_BOTTOM&==&m_yAlignment)&&&//&顶对齐&&&&&&&&&&{&&&&&&&&&&&&&&y&=&crect.Height()&-&size.&&&&&&&&&&}&&&&&&&&&&else&if&(Y_CENTER&==&m_yAlignment)&&&//&Y居中对齐&&&&&&&&&&{&&&&&&&&&&&&&&y&=&(crect.Height()&-&size.cy)&/&2;&&&&&&&&&&}&&&&&&}&&&&&&//&设置dc字串颜色&&&&&&::SetTextColor(lpDrawItemStruct-&hDC,&m_clrText);&&&&&&TextOut(lpDrawItemStruct-&hDC,&x,&y,&strCaption,&strCaption.GetLength());&&}&&&&&&void&CRichStatic::PreSubclassWindow()&&{&&&&&&CStatic::PreSubclassWindow();&&&&&&ModifyStyle(0,&SS_OWNERDRAW);&&}&&&&&&void&CRichStatic::SetFont(CString&strFaceName,&LONG&nHeight)&&{&&&&&&if&(m_selfCreated&&&&m_hFont&!=&NULL)&&&&&&{&&&&&&&&&&DeleteObject(m_hFont);&&&&//&若字体对象为对象自己创建并且不为NULL,则销毁掉以释放内核对象&&&&&&}&&&&&&CFont&&&&&&&LOGFONT&&&&&&&memset(&lf,&0,&sizeof&lf);&&&&//&清空LOGFONT结构体,之后对其赋值&&&&&&lf.lfHeight&=&nH&&&&&&_tcscpy_s(lf.lfFaceName,&strFaceName.GetBuffer());&&&&//&将字体名拷贝到LOGFONT结构体中&&&&&&VERIFY(cfont.CreateFontIndirect(&lf));&&&&//&创建新的字体&&&&&&m_hFont&=&(HFONT)cfont.m_hO&&&&&&m_selfCreated&=&TRUE;&&&&//&标记字体为自己创建的&&}&&&&&&void&CRichStatic::SetFont(HFONT&hFont)&&{&&&&&&if&(m_selfCreated&&&&m_hFont&!=&NULL)&&&&&&{&&&&&&&&&&DeleteObject(m_hFont);&&&&//&若字体对象为对象自己创建并且不为NULL,则销毁掉以释放内核对象&&&&&&}&&&&&&m_hFont&=&hF&&&&&&m_selfCreated&=&FALSE;&&&//&标记字体非自己创建&&}&&&&&&void&CRichStatic::SetFont(const&CFont&*pFont)&&{&&&&&&if&(m_selfCreated&&&&m_hFont&!=&NULL)&&&&&&{&&&&&&&&&&DeleteObject(m_hFont);&&&&//&若字体对象为对象自己创建并且不为NULL,则销毁掉以释放内核对象&&&&&&}&&&&&&m_hFont&=&(HFONT)pFont-&m_hO&&&&&&m_selfCreated&=&FALSE;&&&//&标记字体非自己创建&&}&&&&&&BOOL&CRichStatic::OnEraseBkgnd(CDC*&pDC)&&{&&&&&&//&当背景色为透明时,需要保存与拷贝显示主框的显示区域&&&&&&if&(m_clrBackground&==&CLR_NONE)&&&&&&{&&&&&&&&&&if&(m_Bmp.GetSafeHandle()&==&NULL)&&&&&&&&&&{&&&&&&&&&&&&&&CRect&R&&&&&&&&&&&&&&GetWindowRect(&Rect);&&&&&&&&&&&&&&CWnd&*pParent&=&GetParent();&&&&&&&&&&&&&&ASSERT(pParent);&&&&&&&&&&&&&&pParent-&ScreenToClient(&Rect);&&//&将坐标转换为与主对话框相对应&&&&&&&&&&&&&&&&&&&&&&//&拷贝对应区域主框显示的内容&&&&&&&&&&&&&&CDC&*pDC&=&pParent-&GetDC();&&&&&&&&&&&&&&CDC&MemDC;&&&&&&&&&&&&&&MemDC.CreateCompatibleDC(pDC);&&&&&&&&&&&&&&m_Bmp.CreateCompatibleBitmap(pDC,Rect.Width(),Rect.Height());&&&&&&&&&&&&&&CBitmap&*pOldBmp&=&MemDC.SelectObject(&m_Bmp);&&&&&&&&&&&&&&MemDC.BitBlt(0,0,Rect.Width(),Rect.Height(),pDC,Rect.left,Rect.top,SRCCOPY);&&&&&&&&&&&&&&MemDC.SelectObject(pOldBmp);&&&&&&&&&&&&&&MemDC.DeleteDC();&&&&//&删除内存DC,否则内存泄漏&&&&&&&&&&&&&&pParent-&ReleaseDC(pDC);&&&&&&&&&&}&&&&&&&&&&else&//&将主框显示的内容拷贝回去&&&&&&&&&&{&&&&&&&&&&&&&&CRect&R&&&&&&&&&&&&&&GetClientRect(Rect);&&&&&&&&&&&&&&CDC&MemDC;&&&&&&&&&&&&&&MemDC.CreateCompatibleDC(pDC);&&&&&&&&&&&&&&CBitmap&*pOldBmp&=&MemDC.SelectObject(&m_Bmp);&&&&&&&&&&&&&&pDC-&BitBlt(0,0,Rect.Width(),Rect.Height(),&MemDC,0,0,SRCCOPY);&&&&&&&&&&&&&&MemDC.SelectObject(pOldBmp);&&&&&&&&&&&&&&MemDC.DeleteDC();&&&&//&删除内存DC,否则内存泄漏&&&&&&&&&&}&&&&&&}&&&&&&&&&&return&TRUE;&&}&&&&&&LRESULT&CRichStatic::OnSetText(WPARAM&wParam,LPARAM&lParam)&&{&&&&&&LRESULT&Result&=&Default();&&&&&&Invalidate();&&&&&&UpdateWindow();&&&&&&return&R&&} &from:http://blog.csdn.net/cashey1991/article/details/7545614

我要回帖

更多关于 mfc设置按钮字体颜色 的文章

 

随机推荐