消除贴图屏幕闪烁的双缓存技术
HDC Memhdc;
HBITMAP hBitmap;
HANDLE hHandle;
hdc = BeginPaint (hWnd, &ps);
Memhdc=::CreateCompatibleDC(hdc); //建立内存环境
hBitmap=::CreateCompatibleBitmap(hdc,rect.right,rect.bottom); //建立位图环境 位图刚建的时候是黑的,所以要FillRect
::SelectObject(Memhdc,hBitmap);
//位图选进内存后,供贴图的内存环境已经准备好,可以开始内存贴图
HDC hdcbmp;
hdcbmp=::CreateCompatibleDC(hdc); //再建个内存环境
hHandle=::LoadImage(0,"22.bmp",IMAGE_BITMAP,0,0,LR_LOADTRANSPARENT|LR_LOADFROMFILE); //载入位图
::SelectObject(hdcbmp,hHandle); //将位图选进内存
::FillRect(Memhdc,&rect,WHITE_BRUSH); //FillRect这样的函数必须要放在Bitmap被Select之后才能起作用
::BitBlt(Memhdc,x,y,rect.right,rect.bottom,hdcbmp,0,0,SRCCOPY); //位图先画到内存(可以发现Memhdc和hdcbmp都是内存环境)
::BitBlt(hdc,0,0,rect.right,rect.bottom,Memhdc,0,0,SRCCOPY); //再从内存画到显示
EndPaint (hWnd, &ps);