原因
最近有个需求, 由于程序启动的时候, 初始化比较慢, 所以要加一个进度条,这个进度条又不能使用gui之类的控件, 因为还没有初始化完毕, 只能使用HDC直接在内存上画一个了
代码
废话不多说,直接上代码, 思路全部在代码的注释中 具体的函数意义不在讲解,大家可以自行网上搜索, 这里只介绍做出这个简单的黑白progress_bar的几个关键点
HDC hDC, hMemDc;
PAINTSTRUCT Ps;
hDC = BeginPaint(mViewHandle, &Ps);
hMemDc = CreateCompatibleDC(hDC);
SetStretchBltMode(hDC, STRETCH_DELETESCANS);
SelectObject(hMemDc, NULL);
StretchBlt(hDC, 0, _top, bar_length, bar_width, hMemDc, bx, by, bar_length, bar_width, BLACKNESS);
SelectObject(hMemDc, NULL);
StretchBlt(hDC, 0, _top, bar_length * mBarProress, bar_width, hMemDc, bx, by, bar_length, bar_width, WHITENESS);
DeleteDC(hMemDc);
EndPaint(mViewHandle, &Ps);
|