前幾天由於編程的需要。要做一個有3D邊框的static控件,於是在查考別人做的3DBar的基礎上,自己做了一個C3DBar類,現在把它奉獻給大家。下面是C3DBar的使用方法。
這個類的使用方法很簡單,3DBbar中一共有7個public函數。分別為:
void SetBarColour(COLORREF cr);
void DrawHorizontal(CDC* pDC, CRect& BarRect); //畫水平bar
void DrawVertical(CDC*pDC,CRect& BarRect); //畫垂直bar
void DrawLeft(CDC*pDC,CRect&leftRect); //畫左邊bar
void DrawRight(CDC*pDC,CRect&rightRect); //畫右邊bar
void DrawTop(CDC*pDC,CRect&topRect); //畫頂邊bar
void DrawBottom(CDC*pDC,CRect&bottomRect); //畫底邊bar
從以上我們也可以看到,其實我們在用的時候一般用的是SetBarColour(COLORREF cr)、 DrawLeft、DrawRight、DrawTop和DrawBottom這5個函數,用法也很簡單。如:我們在一個自定義的Static CDigiStatic中使用。可以分為以下幾步:
1、首先把3DBar.h 和3DBar.cpp 加入到你的工程中。
2、在你使用的類中加入頭文件,#include "3dbar.h"
3、申明一個C3DBar對象。C3DBar Bar;
4、在類的初始化中調用Bar的函數:SetBarColour;
5、在你使用的類的OnPaint();函數中調用前面介紹的4個函數就可以了。
例如:
void CDigiStatic::OnPaint()
{
CRect dlgrect;
GetClientRect(&dlgrect);
CRect rectleft(0,0,dlgrect.Width()/30,dlgrect.bottom),
rectright(dlgrect.right-dlgrect.Width()/30,0,dlgrect.right,dlgrect.bottom),
recttop(0,0,dlgrect.right,dlgrect.Width()/30),
rectbottom(0,dlgrect.bottom-dlgrect.Width()/30,dlgrect.right,dlgrect.bottom);
CPaintDC dc(this); // device context for painting
Bar.DrawLeft(&dc,rectleft);
Bar.DrawTop(&dc,recttop);
Bar.DrawBottom(&dc,rectbottom);
Bar.DrawRight(&dc,rectright);
}