在状态栏绘制进度条

发布时间:2018年1月21日 作者:sieye 查看次数:1029


代码:


HWND hStatusWnd;

void mStatusProgress(HWND pStWnd,int pLn,int pColor);


......

hStatusWnd=CreateStatusWindow(WS_CHILD | WS_VISIBLE,NULL,hWnd,200); //建立状态栏

int tStPart[3];

tStPart[0]=200;

tStPart[1]=350;

tStPart[2]=-1;

SendMessage(hStatusWnd,SB_SETPARTS,3,(long)&tStPart); //分割状态栏

......



//在状态栏绘制进度条

//参数:pStWnd状态栏句柄,pLn绘制长度,pColor绘制颜色

void mStatusProgress(HWND pStWnd,int pLn,int pColor)

{

HDC hdc;

HBRUSH hBBrush,hOldBrush;

HPEN hPen,hOldPen;

RECT rt;

::GetWindowRect(pStWnd,&rt);

hdc=::GetDC(pStWnd);

hBBrush=::CreateSolidBrush(pColor); //创建一个画刷

hOldBrush=(HBRUSH)::SelectObject(hdc,hBBrush);

hPen=(HPEN)::CreatePen(PS_NULL,1,RGB(255,0,0)); //创建一个空画笔(消除边框)

hOldPen=(HPEN)::SelectObject(hdc,hPen);

::Rectangle(hdc,0,2,pLn,rt.bottom-rt.top-2); //绘制长方形(进度)

::SelectObject(hdc,hOldBrush);

::DeleteObject(hBBrush);

::SelectObject(hdc,hOldPen);

::DeleteObject(hPen);

::ReleaseDC(pStWnd,hdc);

}




版权所有!www.sieye.cn
E.Mail:sieye@sohu.com QQ:66697110