mfc 绘制 圆形按钮 继承CButton
2012-05-07 13:30
316 查看
头文件
实现文件
为 按钮 关联 控件变量,在.h文件中将按钮类型改为MyButton即可。
// MyButton 圆形按钮 class MyButton : public CButton { private: bool is_pressed; //鼠标是否按下 public: virtual void PreSubclassWindow(); //修改自绘属性 virtual void DrawItem(LPDRAWITEMSTRUCT /*lpDrawItemStruct*/); //绘制 圆形按钮 public: DECLARE_MESSAGE_MAP() afx_msg void OnLButtonDown(UINT nFlags, CPoint point); //鼠标按下 afx_msg void OnLButtonUp(UINT nFlags, CPoint point); //鼠标松开 afx_msg BOOL OnEraseBkgnd(CDC* pDC); //不擦除背景 };
实现文件
// MyButton void MyButton::PreSubclassWindow() { ModifyStyle(0,BS_OWNERDRAW); is_pressed = false; CButton::PreSubclassWindow(); } void MyButton::DrawItem(LPDRAWITEMSTRUCT lp) { CRect rc = lp->rcItem; CDC dc; dc.Attach(lp->hDC); dc.SetBkMode(TRANSPARENT); CBrush br; br.CreateStockObject(NULL_BRUSH); dc.SelectObject(&br); if (is_pressed) { CPen pen(PS_SOLID,2,RGB(255,0,0)); dc.SelectObject(&pen); dc.Ellipse(0,0,rc.Width(),rc.Height()); dc.SetTextColor(RGB(255,0,0)); } else { CPen pen(PS_SOLID,2,RGB(0,255,0)); dc.SelectObject(&pen); dc.Ellipse(0,0,rc.Width(),rc.Height()); dc.SetTextColor(RGB(0,255,0)); } CString str; GetWindowText(str); dc.DrawText(str,CRect(0,0,rc.right,rc.bottom),DT_CENTER | DT_VCENTER | DT_SINGLELINE); dc.DeleteDC(); } BEGIN_MESSAGE_MAP(MyButton, CButton) ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_ERASEBKGND() END_MESSAGE_MAP() void MyButton::OnLButtonDown(UINT nFlags, CPoint point) { is_pressed = true; CButton::OnLButtonDown(nFlags, point); } void MyButton::OnLButtonUp(UINT nFlags, CPoint point) { is_pressed = false; CButton::OnLButtonUp(nFlags, point); } BOOL MyButton::OnEraseBkgnd(CDC* pDC) { return TRUE; //不擦除背景 }
为 按钮 关联 控件变量,在.h文件中将按钮类型改为MyButton即可。
相关文章推荐
- 自绘实现半透明水晶按钮(继承CButton,设置BS_OWNERDRAW风格,覆盖DrawItem函数绘制按钮,把父窗口的背景复制到按钮上,实现视觉上的透明,最后通过AlphaBlend实现半透明)
- 一个继承于CButton的按钮控件类,实现Button背景色与文字的共存与改变,可以自行设计背景色
- 绘制圆形按钮
- MFC 绘制标题栏 按钮
- 将button按钮绘制成圆形按钮,做状态灯指示(winform)
- Android开发:用Drawable XML绘制带阴影效果的圆形按钮
- 从CButton继承产生链接风格按钮
- 绘制圆形按钮
- VC MFC按钮(CButton)控件
- 用Drawable XML绘制带阴影效果的圆形按钮
- (VC++2013)MFC自绘圆形按钮
- Android使用XML Shape绘制带阴影效果的圆形按钮
- winfrom 绘制圆形按钮
- MFC:三角形按钮(重绘CButton)
- 有关MFC中使用CButton类后位图按钮闪烁的问题
- 设置vc中MFC的Button颜色和字体,CButton继承类的三色和字体设置
- MFC 为按钮(CButton )添加位图
- Android使用XML Shape绘制带阴影效果的圆形按钮
- Android使用XML Shape绘制带阴影效果的圆形按钮
- 用win32 api(非mfc)实现的一个圆形按钮以及WM_COMMAND消息