每次运行结果很诡异,好像跟窗口位置有关,很蛋疼啊,谁能帮忙看看,BitBlt到底是怎么工作的啊?拜谢了~~
WindowsWin32APIBitBlt
我后来又观察了下,截取的小块位图好像是窗口后面的背景,难道是win7的aero效果的问题?
截取的小块位图是不确定的可以是本窗口的前后。
你用另一个窗口覆盖他看看。
具体是什么原因呢?我看书上确实是可以运行出结果的。。bitblt。bitblt。
改成:
BitBlt(hdcClient,x,y,16,16,hdcWindow,4,4,SRCCOPY);
可能好一点,但不解决根本问题。
问题在hdcWindow是变化的
首先要固定bmp:
caseWM_PAINT:
hdcClient=BeginPaint(hwnd,&ps);
//onlyonce
if(!Done)//staticBOOL
{
Done=TRUE;
hdcWindow=GetWindowDC(hwnd);
memDC=CreateCompatibleDC(hdcWindow);//staticHDC
bmp=CreateCompatibleBitmap(hdcWindow,16,16);//staticHBITMAP
SelectObject(memDC,bmp);
BitBlt(memDC,0,0,16,16,hdcWindow,4,4,SRCCOPY);
ReleaseDC(hwnd,hdcWindow);
}
GetClientRect(hwnd,&rc);
FillRect(hdcClient,&rc,GetStockObject(WHITE_BRUSH));
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27470-2.html