我们利用CDC类的DrawFrameControl函数来绘制控件,而且能够修改控件的颜色等。
BOOL DrawFrameControl(
LPRECT lpRect,
UINT nType,
UINT nState );
参数说明:lpRect :矩形
nType :控件类型
nState :控件状态
下面是最后两个参数可以引用的值:
#define DFC_CAPTION 1
#define DFC_MENU 2
#define DFC_SCROLL 3
#define DFC_BUTTON 4
#if(WINVER >= 0x0500)
#define DFC_POPUPMENU 5
#endif /* WINVER >= 0x0500 */
#define DFCS_CAPTIONCLOSE 0x0000
#define DFCS_CAPTIONMIN 0x0001
#define DFCS_CAPTIONMAX 0x0002
#define DFCS_CAPTIONRESTORE 0x0003
#define DFCS_CAPTIONHELP 0x0004
#define DFCS_MENUARROW 0x0000
#define DFCS_MENUCHECK 0x0001
#define DFCS_MENUBULLET 0x0002
#define DFCS_MENUARROWRIGHT 0x0004
#define DFCS_SCROLLUP 0x0000
#define DFCS_SCROLLDOWN 0x0001
#define DFCS_SCROLLLEFT 0x0002
#define DFCS_SCROLLRIGHT 0x0003
#define DFCS_SCROLLCOMBOBOX 0x0005
#define DFCS_SCROLLSIZEGRIP 0x0008
#define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
#define DFCS_BUTTONCHECK 0x0000
#define DFCS_BUTTONRADIOIMAGE 0x0001
#define DFCS_BUTTONRADIOMASK 0x0002
#define DFCS_BUTTONRADIO 0x0004
#define DFCS_BUTTON3STATE 0x0008
#define DFCS_BUTTONPUSH 0x0010
#define DFCS_INACTIVE 0x0100
#define DFCS_PUSHED 0x0200
#define DFCS_CHECKED 0x0400
#if(WINVER >= 0x0500)
#define DFCS_TRANSPARENT 0x0800
#define DFCS_HOT 0x1000
#endif /* WINVER >= 0x0500 */
#define DFCS_ADJUSTRECT 0x2000
#define DFCS_FLAT 0x4000
#define DFCS_MONO 0x8000
在OnPaint函数中写代码:
CDC *pDC=GetDC();
COLORREF Color = RGB(0, 0, 255);
CRect rect(10, 10, 70, 40);//定义矩形大小
pDC->DrawFrameControl(rect,DFC_BUTTON,DFCS_BUTTONPUSH);
//pDC->FillSolidRect(&rect,RGB(255,0,255));
pDC->SetTextColor(Color); //字体颜色可更改
pDC->SetBkMode(TRANSPARENT);
pDC->TextOutW(18,18,L"测试");
运行结果: