VC++2010中实现自定义窗口按钮控件.docxVIP

  • 5
  • 0
  • 约2.13千字
  • 约 6页
  • 2017-06-07 发布于重庆
  • 举报
VC2010中实现自定义窗口按钮控件

VC++ 2010中实现自定义窗口按钮控件新建一个MFC类使得它继承与CButton类;32.在生成的类中添加变量#pragmaonce// CCustomButtonclassCCustomButton : publicCButton{DECLARE_DYNAMIC(CCustomButton)public:CCustomButton();virtual ~CCustomButton();BOOL m_IsPressed;protected:DECLARE_MESSAGE_MAP()public:virtualvoidDrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/);afx_msgvoidOnLButtonUp(UINT nFlags, CPoint point);afx_msgvoidOnLButtonDown(UINT nFlags, CPoint point);afx_msg BOOL OnEraseBkgnd(CDC* pDC);};3.。重写方法WM_BUTTONDOWN WM_LBUTTONUP// CustomButton.cpp : 实现文件//#include stdafx.h#include just test.h#include CustomButton.h// CCustomButtonIMPLEMENT_DYNAMIC(CCustomButton, CButton)CCustomButton::CCustomButton(){}CCustomButton::~CCustomButton(){}BEGIN_MESSAGE_MAP(CCustomButton, CButton)ON_WM_LBUTTONUP()ON_WM_LBUTTONDOWN()ON_WM_ERASEBKGND()END_MESSAGE_MAP()// CCustomButton消息处理程序voidCCustomButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct){CRectrect;GetClientRect(rect);CDC dc;dc.Attach(lpDrawItemStruct-hDC);dc.SetBkMode(TRANSPARENT);CBrushm_Brush;m_Brush.CreateStockObject(NULL_BRUSH);dc.SelectObject(m_Brush);if(m_IsPressed){CPenpen(PS_SOLID,2,RGB(255,2,0));dc.SelectObject(pen);HRGN rgn = CreateEllipticRgn(0,0,rect.Width(),rect.Height());SetWindowRgn(rgn,TRUE);dc.Ellipse(0,0,rect.Width(),rect.Height());dc.SetTextColor(RGB(0,0,255));}else{CPenpen(PS_SOLID,2,RGB(5,255,0));dc.SelectObject(pen);HRGN rgn = CreateEllipticRgn(0,0,rect.Width(),rect.Height());SetWindowRgn(rgn,TRUE);dc.Ellipse(0,0,rect.Width(),rect.Height());dc.SetTextColor(RGB(120,0,190));}CStringstr;GetWindowText(str);dc.DrawText(str,CRect(0,0,rect.Width(),rect.Height()),DT_CENTER|DT_VCENTER|DT_SINGLELINE);// TODO: 添加您的代码以绘制指定项}voidCCustomButton::OnLButtonUp(UINT nFlags, CPoint point){// TODO: 在此添加消息处理程序代码和/或调用默认值m_IsPressed = FALSE;CButton::OnLButtonUp(nFlags, point);}voidCCustomButton::OnLButtonDown(UINT nFlags, CPoint point){// TODO: 在此添加消息处理程序代码和/或调用默认值m_IsPressed = TRUE;CButton::OnLButtonDown(nFlags, point);}BOOL CCustomButton::OnEraseBkgnd(CDC* pDC){// TODO: 在此添

文档评论(0)

1亿VIP精品文档

相关文档