CAD工具之家's Archivers

From boitboy on 2014-05-23 19:22:30

带个颜色框的按钮

效果图 //GColorButton.h #pragma once class GColorButton:public CButton { DECLARE_DYNAMIC(GColorButton) public: GColorButton(void); public: ~GColorButton(void); virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);  COLORREF GetFillColor(){return m_FillColor;}//获取填充框颜色 void SetFillColor(const COLORREF color){m_FillColor=color;}//设置填充框颜色 private: COLORREF m_FillColor;//填充框颜色 }; //GColorButton.cpp #include "StdAfx.h" #include "GColorButton.h" IMPLEMENT_DYNAMIC(GColorButton, CGridCell) GColorButton::GColorButton(void) { m_FillColor=RGB(255,0,0); } GColorButton::~GColorButton(void) { } void GColorButton::DrawItem(LPDRAWITEMSTRUCT lpDIS) { UINT uStyle = DFCS_BUTTONPUSH; // If drawing selected, add the pushed style to DrawFrameControl. if (lpDIS->itemState & ODS_SELECTED) uStyle |= DFCS_PUSHED; // Draw the button frame. ::DrawFrameControl(lpDIS->hDC, &lpDIS->rcItem,       DFC_BUTTON, uStyle); RECT rc=lpDIS->rcItem; int nHeight=abs(rc.top-rc.bottom); int nWidth=abs(rc.right-rc.left); nHeight/=4; RECT rc1=rc; rc1.left+=nHeight; rc1.right=rc1.left+3*nHeight; rc1.top=rc.top+nHeight; rc1.bottom=rc.bottom-nHeight; lpDIS->rcItem.left+=nHeight*4;  // Get the button's text. CString strText; GetWindowText(strText); ::DrawText(lpDIS->hDC, strText, strText.GetLength(),       &lpDIS->rcItem, DT_SINGLELINE|DT_VCENTER|DT_CENTER); ::FillRect(lpDIS->hDC,&rc1,CreateSolidBrush(m_FillColor)); }   特别注意,一定要在资源编辑时将按钮设置为OwnerDrw 表示自己绘制按钮

查看完整版本: 带个颜色框的按钮

Tags:


©CAD工具之家
创办于:2013年5月24日