1. 获得目标DC句柄
2.创建一个与目标DC兼容的内存DC
3.将位图句柄选到内存DC上,同时保存旧的位图句柄
4.使用GetObject 函数获取位图的内容
5.使用BITBL函数将内存DC中的位图拷贝到目标DC上(这种方法也经常被用来解决闪屏问题)
6.不要忘记将位图从内存DC中选出来(必须,因为一个位图被选进一个内存DC后,如果不释放,该位图无法再次被选进)
7.销毁内存DC
下面是相应代码:
1. hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
2. HDC hDCMem=::CreateCompatibleDC(hdc);
3. HBITMAP hOldBmp=(HBITMAP)::SelectObject(hDCMem,hbitmap);//hbitmap是LoadBitmap执行后的返回值
BITMAP bmp;
4. ::GetObject(hbitmap, sizeof(BITMAP),&bmp);
5. ::BitBlt(hdc, 0,0,bmp.bmWidth,bmp.bmHeight,hDCMem,0,0,SRCCOPY);
6. ::SelectObject(hDCMem,hOldBmp);
7. ::DeleteDC(hDCMem);
EndPaint(hWnd, &ps);