📄 linkbutton.cpp
字号:
// LinkButton.cpp : implementation file
//
#include "stdafx.h"
#include "Modem3.h"
#include "LinkButton.h"
//#include "CModem3Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLinkButton
CLinkButton::CLinkButton()
{
m_brush1.CreateSolidBrush(RGB(0,245,0));
m_brush2.CreateSolidBrush(RGB(220, 220, 220));
m_updown=TRUE;
}
CLinkButton::~CLinkButton()
{
if (fUnderline.GetSafeHandle()) fUnderline.DeleteObject();
}
BEGIN_MESSAGE_MAP(CLinkButton, CButton)
//{{AFX_MSG_MAP(CLinkButton)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLinkButton message handlers
void CLinkButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// 获取一个CDC指针
CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
//定义按钮区域并初始化
CRect rect(lpDrawItemStruct->rcItem);
int iObk = pDC->SetBkMode(TRANSPARENT);
//初始化按钮状态
UINT state = lpDrawItemStruct->itemState;
CFont * pOldFont = NULL;
CString strText;
GetWindowText(strText);
if (button_flag==0)
{
pDC->SetBkColor(RGB(225,255,255));
pDC->FillRect(rect,&m_brush2);
// pDC->Draw3dRect(rect,::GetSysColor(COLOR_BTNHIGHLIGHT),::GetSysColor(COLOR_BTNSHADOW));
pDC->DrawText(strText, rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
}
else if(button_flag==1)
{
pDC->Draw3dRect(rect,RGB(0,0,0),RGB(0,0,0));
//字体颜色
pDC->SetTextColor(RGB(0,0,0));
pDC->FillRect(rect,&m_brush1);
// pDC->Draw3dRect(rect,::GetSysColor(COLOR_BTNHIGHLIGHT),::GetSysColor(COLOR_BTNSHADOW));
pDC->DrawText(strText, rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
}
//加下画线(也可以用其他字体)
if(m_updown)
pDC->Draw3dRect(rect,::GetSysColor(COLOR_BTNHIGHLIGHT),::GetSysColor(COLOR_BTNSHADOW));
else
pDC->Draw3dRect(rect,::GetSysColor(COLOR_BTNSHADOW),::GetSysColor(COLOR_BTNHIGHLIGHT));
if (fUnderline.GetSafeHandle() == NULL)
{
CFont * pFont = GetFont();
ASSERT(pFont);
LOGFONT lf;
pFont->GetLogFont(&lf);
lf.lfUnderline = TRUE;
fUnderline.CreateFontIndirect(&lf);
}
pOldFont = pDC->SelectObject(&fUnderline);
ReleaseDC(pDC);
}
void CLinkButton::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect rect1;
GetWindowRect(rect1);
CPoint ps;
GetCursorPos(&ps);
if(!rect1.PtInRect(ps))
{
CButton::OnLButtonDown(nFlags, point);
return;
}
m_updown=FALSE;
/* CRect rect;
GetClientRect(rect);
CDC *pDC=GetDC();
pDC->Draw3dRect(rect,::GetSysColor(COLOR_BTNSHADOW),::GetSysColor(COLOR_BTNHIGHLIGHT));
ReleaseDC(pDC);*/
CButton::OnLButtonDown(nFlags, point);
}
void CLinkButton::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CRect rect1;
GetWindowRect(rect1);
CPoint ps;
GetCursorPos(&ps);
if(!rect1.PtInRect(ps))
{
CButton::OnLButtonDown(nFlags, point);
return;
}
m_updown=TRUE;
/*
CRect rect;
GetClientRect(rect);
CDC *pDC=GetDC();
pDC->Draw3dRect(rect,::GetSysColor(COLOR_BTNHIGHLIGHT),::GetSysColor(COLOR_BTNSHADOW));
ReleaseDC(pDC);
*/
CButton::OnLButtonUp(nFlags, point);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -