静态文本控件类CStaticText的使用
2014-10-22 16:20
246 查看
文本是程序给予用户提示信息的一种方式,简单方便。使用MFC的同学们可能再也熟悉不过了,但是有时他也不尽人意,比如我们想像在Word中一样改变他的字体、颜色、大小等属性时MFC的静态文本控件却没有给我们提供相关的接口,为了解决这个问题,我们常用的方式就是自绘控件,但是对于初学者来说自绘也是“亚历山大”,所以这里给大家交流一下如何直接使用别人的成果--扩展控件类的使用。本次以“静态文本控件类CStaticText的使用”为例跟大家交流。
PS:关于这些类的来源需要大家平时多积累网上的资源......
先把类的源码贴出:
CStatic.h
1.当然是把源码复制下来添加到自己的工程啦;
2.在对话框类的头文件中添加文件包含:
PS:关于这些类的来源需要大家平时多积累网上的资源......
先把类的源码贴出:
CStatic.h
class CStaticText : public CStatic { public: CStaticText(); virtual ~CStaticText(); public: //设置字体 void SetPointFont(bool bChangeFont = true, int nPointSize = 100, LPCTSTR lpszFaceName = TEXT("Microsoft Sans Serif")); //设置字符的颜色 void SetColor(COLORREF color = RGB(0, 0, 0) ); //设置文字 void SetCaption(CString szCaption); bool m_bChangeFont; // 是否可以改变字体 int m_nPointSize; // 字的大小 UINT m_nFormat; //显示字的格式用在DrawText LPCTSTR m_lpszFaceName; // 字体的名字 COLORREF m_color; //文字的颜色 protected: CString m_szCaption; //{{AFX_MSG(CStaticText) afx_msg void OnPaint(); //}}AFX_MSG DECLARE_MESSAGE_MAP() };CStatic.cpp
#include "stdafx.h" #include "StaticText.h" CStaticText::CStaticText() { m_szCaption = _T(""); m_color = RGB(0, 0, 0); m_nPointSize = 120; m_lpszFaceName = _T("Arial"); m_bChangeFont = FALSE; m_nFormat = DT_CENTER; } CStaticText::~CStaticText() { } BEGIN_MESSAGE_MAP(CStaticText, CStatic) //{{AFX_MSG_MAP(CStaticText) ON_WM_PAINT() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CStaticText message handlers void CStaticText::OnPaint() { CPaintDC dc(this); // device context for painting CRect rc; GetClientRect(&rc); CClientDC parentDC(GetParent()); // TODO: Add your message handler code here CFont font; //font.CreatePointFont(m_nPointSize, m_lpszFaceName, NULL); VERIFY(font.CreatePointFont(m_nPointSize, m_lpszFaceName, NULL)); CFont* pOldFont = dc.SelectObject(&font); dc.SetBkMode(TRANSPARENT); dc.SetTextColor(m_color); //dc.SetBkColor(RGB(123, 123, 123)); //设置文本背景如果设置背景模式是TRANSPARENT 的时候无论是什么颜色都和背景一样没有作用。 dc.DrawText(m_szCaption, &rc, m_nFormat); dc.SelectObject(pOldFont); font.DeleteObject(); // Do not call CStatic::OnPaint() for painting messages } void CStaticText::SetCaption(CString szCaption) { m_szCaption = szCaption; } void CStaticText::SetColor(COLORREF color /* = RGB(0, 0, 0)*/) { m_color = color; } void CStaticText::SetPointFont(bool bChangeFont, int nPointSize, LPCTSTR lpszFaceName) { m_bChangeFont = bChangeFont; m_nPointSize = nPointSize; m_lpszFaceName = lpszFaceName; }下面是使用步骤:
1.当然是把源码复制下来添加到自己的工程啦;
2.在对话框类的头文件中添加文件包含:
#include "StaticText.h"3.在对话框类的头文件中添加一个该文本类的公有成员变量:
public: CStaticText m_StaticCtrl;4.在对话框类cpp实现:在对话框初始化函数OnInitDialog()中添加如下代码:
// TODO: 在此添加额外的初始化代码 CRect rect; GetClientRect(&rect); m_StaticRect = CRect(0, 20, rect.Width(), 150); m_StaticCtrl.Create(_T(" "), WS_CHILD| WS_VISIBLE, m_StaticRect, this); m_StaticCtrl.SetPointFont(true, 500); m_StaticCtrl.SetCaption(_T("学生信息")); m_StaticCtrl.SetColor(RGB(211, 123, 123));5.效果如图:
相关文章推荐
- speech 的使用 读文本发音(2) text to wav
- 静态文本超链接编程暨CStaticLink类使用说明
- 在TextView使用SpannableString设置复合文本
- 开发者使用JasperReport——静态文本报表
- TextView使用SpannableString设置复合文本
- 使用Text...Endtext输出文本行、表达式和函数的结果及内存变量的内容
- TextView使用SpannableString设置复合文本 + android弹出窗口的实现(PopupWindow)
- 自动完成可编辑文本AutoCompleteTextView的使用
- Android学习札记46:在TextView使用SpannableString设置复合文本
- 解决表格里面使用text-overflow后依旧不能隐藏超出的文本
- 解决chrome使用text-shadow(文本阴影)css时汉字发虚的问题
- jquery之设置元素内容(替换HTML或文本内容,使用html()和text()方法)
- 使用静态文本控件制作超链接
- 使用text-overflow:ellipsis对溢出文本显示省略号
- 静态文本控件的使用
- drupal6中使用drupal_html_to_text方法过滤替换html超文本代码
- 使用sh_helptext可以查询存储过程或视图的文本格式,对它改动后还有更好的用法...
- 溢出文本显示为省略号的效果及其text-overflow:ellipsis;的使用
- 采用静态文本控件(CStatic)作为的波形曲线控件的显示载体
- CStatic控件的基本使用(文本、颜色、图标等)