⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mytextbtn.cpp

📁 VCsuishu fudai de yixie chengxuyuanma
💻 CPP
字号:
// MyTextBtn.cpp : implementation file
//

#include "stdafx.h"
#include "MyTextBtn.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyTextBtn

CMyTextBtn::CMyTextBtn()
{
	m_textColor = RGB(255,0,0);
	
	m_textString = "示波器";

	m_textFont.CreateFont(
		40, 33, 0, 0, FW_HEAVY, FALSE, FALSE, 
		0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,        
		CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,             
		DEFAULT_PITCH |FF_ROMAN   , "黑体");
}

CMyTextBtn::~CMyTextBtn()
{
	m_textFont.DeleteObject();
}


BEGIN_MESSAGE_MAP(CMyTextBtn, CWnd)
	//{{AFX_MSG_MAP(CMyTextBtn)
	ON_WM_PAINT()
	ON_WM_ERASEBKGND()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CMyTextBtn message handlers

BOOL CMyTextBtn::Create(CWnd* pParentWnd, UINT ctlID, UINT nID) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	m_ctlID = ctlID;//保存以备后用
	BOOL bResult;
	CRect rect;
	pParentWnd->GetDlgItem(ctlID)->GetWindowRect(&rect);//得到窗口坐标
	pParentWnd->ScreenToClient(&rect);//转换为父窗口内坐标	
	bResult = CWnd::CreateEx( NULL , 
		AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW) ,
		NULL, WS_VISIBLE | WS_CHILD, rect,
		pParentWnd, nID);
	pParentWnd->GetDlgItem(ctlID)->ShowWindow(SW_HIDE);//隐藏基准按钮
	return bResult;
}

void CMyTextBtn::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	GetParent()->GetDlgItem(m_ctlID)->GetWindowRect(&m_clientRect);
	GetParent()->ScreenToClient(&m_clientRect);
	m_clientRect.DeflateRect(CSize(0,0));//以防止边缘抖动
	MoveWindow(&m_clientRect);//改变自己的位置

	//创建字体窗体******
	CBrush textbrush(m_textColor);
	dc.SelectObject(&textbrush);               
	//开始记录窗体轮廓路径
//	dc.BeginPath();		
	//设置背景为透明模式,这句话是必须有的。
	dc.SetBkMode(TRANSPARENT);
	dc.SetTextColor(m_textColor);
	CFont* pOldFont;
	pOldFont = dc.SelectObject(&m_textFont);
	dc.TextOut(0, 0, m_textString);		
	dc.SelectObject( pOldFont );
	//结束记录窗体轮廓路径
//	dc.EndPath();
	//method 1**	
//	dc.FillPath();
	//method 2**
	//把所记录的路径转化为窗体轮廓句柄
	//HRGN m_wndRgn;
	//m_wndRgn = ::PathToRegion(dc);
	//赋予窗体指定的轮廓形状
	//SetWindowRgn(m_wndRgn, TRUE);		
	
	// Do not call CWnd::OnPaint() for painting messages
}

void CMyTextBtn::SetTextFont(LOGFONT* pTextLogFont)
{
	if (HFONT(m_textFont)) {
		m_textFont.DeleteObject();
	}
	m_textFont.CreateFontIndirect(pTextLogFont);	
}

void CMyTextBtn::SetTextString(CString textStr)
{
	m_textString = textStr;
}

BOOL CMyTextBtn::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	
	return TRUE;
	//	return CWnd::OnEraseBkgnd(pDC);
}

void CMyTextBtn::SetTextClr(COLORREF textColor)
{
	m_textColor = textColor;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -