📄 adjustbutton.cpp
字号:
// AdjustButton.cpp : implementation file
//
#include "stdafx.h"
#include "MyProject.h"
#include "AdjustButton.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// AdjustButton
AdjustButton::AdjustButton()
{
m_Style=0;
}
AdjustButton::~AdjustButton()
{
}
BEGIN_MESSAGE_MAP(AdjustButton, CButton)
//{{AFX_MSG_MAP(AdjustButton)
ON_WM_CREATE()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_RBUTTONDOWN()
ON_WM_RBUTTONUP()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// AdjustButton message handlers
void AdjustButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
CRect rcWnd;
rcWnd=lpDrawItemStruct->rcItem;
CPoint TopLeft,TopRight,BottomLeft,BottomRight;
TopLeft=rcWnd.TopLeft();
BottomRight=rcWnd.BottomRight();
BottomLeft.x=TopLeft.x;
BottomLeft.y=BottomRight.y;
TopRight.x=BottomRight.x;
TopRight.y=TopLeft.y;
CPen pen,penW,*pPen;
pen.CreatePen(PS_SOLID,4,RGB(142,142,142));
penW.CreatePen(PS_SOLID,2,RGB(255,255,255));
pPen=pDC->SelectObject(&pen);
//绘制文本
CString sCaption;
this->GetWindowText(sCaption);
pDC->SetBkMode(TRANSPARENT);
CRect rcText;
rcText=rcWnd;
rcText.left=rcText.left+10;
rcText.right=rcText.right-10;
CBitmap bmp;
BITMAP bitstr;
if(m_Style==0)
bmp.LoadBitmap(IDB_BITHW0);
else
bmp.LoadBitmap(IDB_BITHW);
bmp.GetBitmap(&bitstr);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&bmp);
/* COLORREF color;
switch(m_Style)
{
case 0:
color=RGB(102,153,204);
break;
case 1:
color=RGB(255,204,153);
break;
case 3:
color=RGB(128,128,255);
break;
}
CBrush brush;
brush.CreateSolidBrush(color);
*/
CRect rcBut;
if(m_Aspect==0)
{
rcBut=CRect(TopLeft,BottomRight);
pDC->StretchBlt(0,0,rcBut.Width(),rcBut.Height(),&memDC,0,0,rcBut.Width(),rcBut.Height(),SRCCOPY);
pDC->SelectObject(&pen);
pDC->MoveTo(TopRight);
pDC->LineTo(BottomRight);
pDC->MoveTo(BottomRight);
pDC->LineTo(BottomLeft);
pDC->SelectObject(&penW);
pDC->MoveTo(TopRight);
pDC->LineTo(BottomRight);
pDC->MoveTo(BottomRight);
pDC->LineTo(BottomLeft);
pDC->DrawText(sCaption,rcText,DT_RIGHT|DT_SINGLELINE|DT_VCENTER);
}
else
{
rcBut=CRect(TopLeft,CPoint(BottomRight.x-6,BottomRight.y));
pDC->StretchBlt(0,0,rcBut.Width(),rcBut.Height(),&memDC,0,0,rcBut.Width(),rcBut.Height(),SRCCOPY);
pDC->SelectObject(&pen);
pDC->MoveTo(TopLeft);
pDC->LineTo(BottomLeft);
pDC->MoveTo(BottomLeft);
pDC->LineTo(BottomRight.x-8,BottomRight.y);
pDC->SelectObject(&penW);
pDC->MoveTo(TopLeft);
pDC->LineTo(BottomLeft);
pDC->MoveTo(BottomLeft);
pDC->LineTo(BottomRight.x-8,BottomRight.y);
pDC->DrawText(sCaption,rcText,DT_LEFT|DT_SINGLELINE|DT_VCENTER);
}
pDC->SelectObject(pPen);
memDC.DeleteDC();
bmp.DeleteObject();
pen.DeleteObject();
penW.DeleteObject();
}
void AdjustButton::SetStyle(int nStyle,int nAspect)
{
m_Style=nStyle;
m_Aspect=nAspect;
}
int AdjustButton::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CButton::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
return 0;
}
void AdjustButton::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
::SendMessage(this->GetParent()->GetSafeHwnd(),DIY_BUTTONDOWN,NULL,NULL);
::SetCursor(::LoadCursor(::AfxGetResourceHandle(),MAKEINTRESOURCE(IDC_CURSOR1)));
CButton::OnLButtonDown(nFlags, point);
}
void AdjustButton::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
::SendMessage(this->GetParent()->GetSafeHwnd(),DIY_BUTTONUP,NULL,NULL);
CButton::OnLButtonUp(nFlags, point);
}
void AdjustButton::OnRButtonDown(UINT nFlags, CPoint point)
{
::SendMessage(this->GetParent()->GetSafeHwnd(),DIY_RBUTTONDOWN,NULL,NULL);
CButton::OnRButtonDown(nFlags, point);
}
void AdjustButton::OnRButtonUp(UINT nFlags, CPoint point)
{
::SendMessage(this->GetParent()->GetSafeHwnd(),DIY_RBUTTONUP,NULL,NULL);
CButton::OnRButtonUp(nFlags, point);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -