📄 mytextbtn.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 + -