CText类使用例程
//========================================================================
//TITLE:
// CText类使用例程
//AUTHOR:
// norains
//DATE:
// Tuesday 17-April-2007
//Environment:
// EVC4.0 + Standard SDK 4.2
// EVC4.0 + Standard SDK 5.0
//========================================================================
CText是为了方便在屏幕中输出文本而封装的类.该类将复杂的设置操作封装成简单的函数,便于代码书写的简便性.
该类使用简单,示例如下:
//设置显示范围
//设置字体颜色
//设置字体磅值,0为默认的字体大小
//设置显示的文本
//设置格式,该参数和DrawText()相同
//绘制文本
默认的是透明显示,如果需要显示背景颜色,可以如下操作:
//设置背景色
//OPAQUE为绘制背景色
然后再调用Draw进行绘制即可.
/**////
// Text.h: interface for the CText class.
//
//Version:
// 1.0
//Data:
// 2007.03.27
/**///
#ifndef TEXT_H
#define TEXT_H
//------------------------------------------------------------------
class CText
...{
public:
void GetPosition(RECT * prcOut);
void SetTextHeight(int iHeight);
void SetFormat(UINT uFormat);
void SetBkColor(COLORREF crColor);
void SetTextColor(COLORREF crColor);
BOOL SetBkMode(int iMode);
void Draw(HDC hdc);
BOOL SetText(const TCHAR *pszText);
void SetPosition(const RECT *prc);
CText();
virtual ~CText();
protected:
RECT m_rcWndPos;
TCHAR *m_pszText;
ULONG m_ulSizeText;
UINT m_uFormat;
int m_iTextHeight;
int m_iBkMode;
COLORREF m_crTextColor;
COLORREF m_crBkColor;
};
#endif // #ifndef TEXT_H
/**///
// Text.cpp: implementation of the CText class.
//
/**///
#include "stdafx.h"
#include "Text.h"
//--------------------------------------------------------------------
//Macro define
#define DEFAULT_BKMODE TRANSPARENT
#define DEFAULT_TEXT_COLOR RGB(0,0,0)
#define DEFAULT_BK_COLOR RGB(255,255,255)
#define DEFAULT_FORMAT (DT_LEFT | DT_SINGLELINE)
#define DEFAULT_TEXT_HEIGHT 0
//--------------------------------------------------------------------
/**///
// Construction/Destruction
/**///
CText::CText()
...{
memset(&m_rcWndPos,0,sizeof(m_rcWndPos));
m_pszText = NULL;
m_ulSizeText = 0;
m_iBkMode = DEFAULT_BKMODE;
m_crTextColor = DEFAULT_TEXT_COLOR;
m_crBkColor = DEFAULT_BK_COLOR;
m_uFormat = DEFAULT_FORMAT;
m_iTextHeight = DEFAULT_TEXT_HEIGHT;
}
CText::~CText()
...{
if(m_pszText != NULL)
...{
delete [] m_pszText;
m_pszText = NULL;
}
}
//--------------------------------------------------------------------
//Description:
// Set the control position
//
//--------------------------------------------------------------------
void CText::SetPosition(const RECT *prc)
...{
m_rcWndPos = *prc;
}
//--------------------------------------------------------------------
//Description:
// Set the text. If you want to display the text ,you should call the Display()
//
//--------------------------------------------------------------------
BOOL CText::SetText(const TCHAR *pszText)
...{
ULONG ulLen = _tcslen(pszText);
if(m_pszText == NULL)
...{
m_pszText = new TCHAR [ulLen + 1];
if(m_pszText == NULL)
...{
return FALSE;
}
m_ulSizeText = ulLen + 1;
}
else if(ulLen + 1 > m_ulSizeText)
...{
delete [] m_pszText;
m_pszText = new TCHAR [ulLen + 1];
if(m_pszText == NULL)
...{
return FALSE;
}
m_ulSizeText = ulLen + 1;
}
_tcscpy(m_pszText,pszText);
return TRUE;
}
//--------------------------------------------------------------------
//Description:
// Display the text stored.
//
//--------------------------------------------------------------------
void CText::Draw(HDC hdc)
...{
COLORREF crOldTextColor = ::SetTextColor(hdc,m_crTextColor);
COLORREF crOldBkColor = ::SetBkColor(hdc,m_crBkColor);
int iOldMode = ::SetBkMode(hdc,m_iBkMode);
LOGFONT lf = ...{0};
HFONT hFontNew, hFontOld;
lf.lfQuality = CLEARTYPE_QUALITY;
lf.lfHeight = -1 * (m_iTextHeight * GetDeviceCaps(hdc,LOGPIXELSY) / 72); //pound
hFontNew = CreateFontIndirect(&lf);
hFontOld = (HFONT) SelectObject(hdc, hFontNew);
DrawText(hdc,m_pszText,-1,&m_rcWndPos,m_uFormat);
SelectObject(hdc, hFontOld);
DeleteObject(hFontNew);
::SetTextColor(hdc,crOldTextColor);
::SetBkColor(hdc,crOldBkColor);
::SetBkMode(hdc,iOldMode);
}
//--------------------------------------------------------------------
//Description:
// Set the background mode.
//
//Parameters:
// iMode: [in] The value is just like as follow:
// OPAQUE -- Background is filled with the current background color before the text,
// hatched brush, or pen is drawn.
// TRANSPARENT -- Background remains untouched.
//--------------------------------------------------------------------
BOOL CText::SetBkMode(int iMode)
...{
if(iMode == OPAQUE || iMode == TRANSPARENT)
...{
m_iBkMode = iMode;
return TRUE;
}
else
...{
return FALSE;
}
}
//--------------------------------------------------------------------
//Description:
// Set the text color
//
//--------------------------------------------------------------------
void CText::SetTextColor(COLORREF crColor)
...{
m_crTextColor = crColor;
}
//--------------------------------------------------------------------
//Description:
// Set the background color
//
//--------------------------------------------------------------------
void CText::SetBkColor(COLORREF crColor)
...{
m_crBkColor = crColor;
}
//--------------------------------------------------------------------
//Description:
// Set Format.
//
//Parameters:
// The value you should see the uFormat of DrawText()
//--------------------------------------------------------------------
void CText::SetFormat(UINT uFormat)
...{
m_uFormat = uFormat;
}
//--------------------------------------------------------------------
//Description:
// Set the height of text as pound
//
//---------------------------------------------------------------------
void CText::SetTextHeight(int iHeight)
...{
m_iTextHeight = iHeight;
}
//--------------------------------------------------------------------
//Description:
// Get the position as rect
//
//---------------------------------------------------------------------
void CText::GetPosition(RECT *prcOut)
...{
*prcOut = m_rcWndPos;
}
CText类使用例程相关推荐
- win32以动态链接库导出类及其成员变量
本文转自:http://hi.baidu.com/ah_leo/blog/item/eccf12f49a0ebce07709d744.html 通常我们在vc程序时候,希望把自己的代码隐藏起来,做成d ...
- 物联网平台搭建的全过程介绍(三)阿里云物联网设备接入订阅发布之Android studio例程
物联网平台搭建系列内容前两节介绍的都是功能性的描述,今天以一个小例子,介绍具体的设备接入.订阅.发布的操作,例子的名字为:学生成绩录入平台,例子的界面如下图所示. 功能描述:当在阿里云物联网平台内下发 ...
- 微信/易信公共平台开发(一):开发了一个简单易用的PHP类(提供源码),十几行代码搞定一个公众号
这两天学习了一下微信公共平台和易信公共平台的开发 (易信与微信协议是基本一样的)(PS:没听说过易信?你out了?) 公共平台开发原理这里就不讲了,如果是初次接触的同学,建议先看 David_Tang ...
- java runnable 匿名_匿名类实现Runnable接口 | 学步园
15.2.3 使用Runnable接口 我们知道,Java中的类只能够是单继承,也就是说,如果一个类为了使用线程而继承了Thread类,它就不能再继承别的类了.这很可能给编程带来不便.本节中介绍的就 ...
- 框架和库有什么区别? [关闭]
框架和库有什么区别? 我一直认为库是一组对象和函数,专注于解决特定问题或应用程序开发的特定领域(即数据库访问); 另一方面,框架是一个以特定方法(即MVC)为中心的图书馆集合,涵盖了应用程序开发的所有 ...
- Delphi的单元文件详解
Delphi的单元文件详解 Delphi单元文件 1.库单元文件头:其中声明了库单元的名字. 2.Interface部分: 由保留字interface开始,结束于保留字implementation ...
- Tensorflow 入门手册(代码与原理释义)
·人工智能与深度学习 -人工智能={机器学习,........else} -机器学习={深度学习(表示学习),........else} ·神经网络 ·卷积神经网络(Convolutional Neu ...
- python面向对象的特征_03 Python 关键点讲解:面向对象的机制
本节开始讲解量化交易系统最基本的编程工具 Python 的关键知识点.我们经过调研发现,目前市面上量化交易相关的书籍.课程等教学产品多数从最基础的安装.语法.函数-开始介绍 Python 这个工具,我 ...
- 使用“ Row_Number”功能和WHILE循环创建滚动平均值报告
介绍 ( Introduction ) A few days ago I received an email from a gentleman in the healthcare industry. ...
- openmvg中cmd模块解析
---恢复内容开始--- 在openmvg库中,定义了一个CmdLine类来定义例程的输入参数格式.源文件为.\openMVG\src\third_party\cmdLine\cmdLine.h. 先 ...
最新文章
- cmd命令简单别木马的蛛丝马迹
- 十一、递归----迷宫问题
- JS进阶篇--JS数组reduce()方法详解及高级技巧
- JSP和Servlet面试题精选
- 【数据结构与算法】之深入解析“二叉树的序列化与反序列化”的求解思路与算法示例
- 【BZOJ4242】水壶(克鲁斯卡尔重构树,BFS)
- 工信部高级软件工程师证书有用吗_考bim工程师证书有用吗
- vins-mono中在rviz可视化下如何在world坐标系中让视角跟着相机移动
- ES6——Class 的继承 笔记
- 实习成长之路:设计模式一:为什么你明明使用面向对象设计语言总写面向过程的程序?
- yb3防爆电机型号含义_YBX3防爆电机
- A星寻路 A星算法优化
- 怎么让照片里的人嘴巴动起来_让照片动起来软件下载-让照片动起来制作软件下载-西西软件下载...
- 苹果六电池_苹果新产品发布,这次加量不加价!
- 计算机无法识别u盘,电脑无法读取u盘怎么处理_电脑不能读取u盘如何解决
- 如何上传到GitHub的main分支而不是master分支
- Polyspace应用:Bug Finder检测代码漏洞
- ubuntu 20.04安装cuda
- 基于空间金字塔网络的光流估计
- datawhale组队学习task9—文件与文件系统
热门文章
- JAVA 通过POI实现Excel从单元格选择下拉选项
- Python Sorted Containers
- 买到Windows新电脑必做的6个优化设置(强烈建议)
- 【ELM分类】基于matlab鲸鱼算法优化核极限学习机数据分类【含Matlab源码 2012期】
- CDR案例:广告条幅banner设计
- STM32入门:STM32F401CDU6库函数工程文件搭建
- 【Code pratice】——星期一、猜年龄、合并检测、生日蜡烛
- 看图写英语作文关于计算机,终于懂了看图写英语作文模板
- python 人脸识别活体检测_人脸识别 -- 活体检测(张嘴摇头识别)
- sql语句中日期相减的操作