CText类使用例程
来源:互联网 发布:手机测角度软件 编辑:程序博客网 时间:2024/04/20 09:52
//========================================================================
//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;
}
//TITLE:
// CText类使用例程
//AUTHOR:
// norains
//DATE:
// Tuesday 17-April-2007
//Environment:
// EVC4.0 + Standard SDK 4.2
// EVC4.0 + Standard SDK 5.0
//========================================================================
CText是为了方便在屏幕中输出文本而封装的类.该类将复杂的设置操作封装成简单的函数,便于代码书写的简便性.
该类使用简单,示例如下:
//设置显示范围
txtInfo.SetPosition(&rcWnd);
//设置字体颜色
txtInfo.SetTextColor(RGB(255,0,0));
//设置字体磅值,0为默认的字体大小
txtInfo.SetTextHeight(0);
//设置显示的文本
txtInfo.SetText(TEXT("测试"));
//设置格式,该参数和DrawText()相同
txtInfo.SetFormat(DT_RIGHT);
//绘制文本
txtInfo.Draw(hdc);
默认的是透明显示,如果需要显示背景颜色,可以如下操作:
//设置背景色
txtInfo.SetBkColor(RGB(0,0,233));
//OPAQUE为绘制背景色
txtInfo.SetBkMode(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类使用例程
- CText类使用例程
- CProgress类使用例程
- class CText{}; CText t; int const CText::*p; 什么意思?
- openCV VideoCapture类的使用例程
- 改进版CTEXT
- 使用wxPropertyGrid的例程
- 12864液晶使用例程
- atmega8 例程: EEPROM使用
- CBLAS的使用例程
- TIdFtp控件使用例程
- log4c 使用例程
- libcurl使用例程
- 使用service例程
- const使用例程
- libcurl 使用及例程
- libcurl使用与例程
- libcurl 使用及例程
- SQL各种写法的效率问题
- 活用设计模式
- 参加Java版聚
- Vista Winpe2.0调用系统自带Explorer Shell的方法.
- 朋友多了路好走
- CText类使用例程
- Bad version number in .class file(zz)
- OpenCms 中内容的版本管理
- JSP页面打印
- 工作_导出总结
- 影响开发效率的12大杀手
- HTML in Action
- dealstring 处理文本文档的数据.
- CProgress类使用例程