导读:
我并不推荐采用自绘的方式去完成一些控件(比如CStatic,CButton,RadioBox,CheckBox等)的美化,而是推荐大家从CWnd入手,把这些基本控件完全重新绘制一遍(当然,有些做的很好的控件还是需要继承来自绘的,比如CListCtrl)。为什么这么做?因为MFC对这些控件的某些操作是隐蔽的,某些限制是我们无法接受的(比如CTabCtrl的头部高度和每个Item的宽度)。我觉得掌握如下知识,绘制其他基本控件就不是绘制的问题,而是数据结构的事情了。
头文件:
#ifndef QCTRL_H
#define QCTRL_H
#include <afxwin.h>
class QMemDC : // 我把双缓存封装到类中,这样就方便多了
public CDC
{
private:
CDC* dcSrc;
CRect rect;
CBitmap bmp;
public:
QMemDC(CDC* dc,CRect rc);
void Apply();
};
class QCtrl :
public CWnd
{
protected:
CString szClassName;
bool isMouseIn;
bool isPressed;
public:
QCtrl();
~QCtrl();
bool Create(CWnd* pParent,CRect rc,CString text,DWORD id = 0,DWORD style = WS_VIS