网站已经改版为Wordpress版本,这里是旧版本的快照,请不要在页面中留言.

【MFC】 CBitMap自绘按钮,实现CButton的美化

·  简介

    MFC使用很简单,但是在界面方面MFC可就令人头痛不已了,不能直接使用png图片就罢了,就连简单的设置背景的函数都没有,本文小悠写了一个使用Bitmap绘制位图按钮的示例,虽然是位图,但是至少比起原始的按钮好看了.

·  效果展示

                                             

·  原理

对于一个按钮来说无非是有 NormalHoverPressGray这四种状态,这里自绘的原理就是在按钮对应的四种状态显示不同的位图背景,当鼠标在按钮上悬浮的时候按钮的背景如果不是Hover那就将其修改为Hover的背景,同理当鼠标单击左键按下的时候将按钮的状态背景为Press;

经过上面的这些变化处理,按钮的美化就完成了,为了提高按钮的绘制效率,你可以使用双缓冲进行绘制。

 

下面是主要的头文件代码:(我只写了3种状态的切换)

#pragma once
// CButtonLZ
//按钮的三种状态正常显示、被按下、鼠标在上方悬停时
#define BTNLZ_NORMAL   0x0000
#define BTNLZ_PUSHED   0x0001
#define BTNLZ_FOCUS         0x0002
class CButtonLZ : public CButton
{
     DECLARE_DYNAMIC(CButtonLZ)
public:
     CButtonLZ();
     virtual ~CButtonLZ();
protected:
     DECLARE_MESSAGE_MAP()
protected:
     //按钮的Id
     UINT m_nID;
     //当前的状态
     DWORD m_CurBtnStatue;
     //正常、按下、聚焦
     CBitmap m_BmpNormal;
     CBitmap m_BmpPushed;
     CBitmap m_BmpFocus;
     //鼠标事件的跟踪[VS2012之前的版本无法响应WM_MOUSELEAVE 消息,需要手动发送]
     TRACKMOUSEEVENT* TME;
     BOOL m_IsCanTrack;
};


·  示例工程代码下载:(VS 2005的)

解压密码 yscode

下载地址:

http://pan.baidu.com/s/1jG81bHs



本文出自【悠然品鉴】转载请注明出处:http://www.youranshare.com/codeorg/sid/120.html


  • 标签:
  • CButton背景图片
  • 按钮美化
  • MFC
网站已经改版为Wordpress版本,这里是旧版本的快照,请不要在页面中留言.