关于HDC及双缓冲的问题?
xiaoy 2001-07-22 08:37:47 //请看如下代码:
HBITMAP hbmp=LoadBitmap(hInst,(LPCTSTR)IDB_BITMAP1);
BITMAP bmp;
GetObject(hbmp,sizeof(BITMAP),&bmp);
HDC memBufDC=CreateCompatibleDC(hdc);
HDC memSrcDC=CreateCompatibleDC(hdc);
HBITMAP hbmpOld=(HBITMAP)SelectObject(memSrcDC,hbmp);
/*******************************************************************下面这段代码不能达到预期的效果,
本来我是想把它先绘到内存中,然后一次BitBlt到屏幕上,免得闪烁。
\*******************************************************************/
for(int i=0;i<bmp.bmWidth;i+=8){
BitBlt(memBufDC,i,0,4,bmp.bmHeight,memSrcDC,i,0,SRCCOPY);
}
BitBlt(hdc,0,0,rt.right,rt.bottom,memBufDC,0,0,SRCCOPY);
/*******************************************************************但如果把它改成
for(int i=0;i<bmp.bmWidth;i+=8){
BitBlt(hdc,i,0,4,bmp.bmHeight,memSrcDC,i,0,SRCCOPY);
}
则又可以把图片显示出来。请各位高手帮我分析一下。谢谢!
(这段代码位于WM_PAINT中,hdc是通过BeginPaint()得来的。)
\*******************************************************************/
SelectObject(memSrcDC,hbmpOld);