我为BitBlt编写了一个测试样本,在WinProc中,WM_PAINT执行此操作:它将重复从窗口(0,0)到客户区域绘制小块。
case WM_CREATE:{
cxSource = GetSystemMetrics (SM_CXSIZEFRAME) + GetSystemMetrics (SM_CXSIZE) ;
cySource = GetSystemMetrics (SM_CYSIZEFRAME) + GetSystemMetrics (SM_CYCAPTION) ;
return 0 ;
case WM_PAINT:
hdcClient = BeginPaint (hwnd, &ps) ;
hdcWindow = GetWindowDC (hwnd) ;
RECT rcClient;
GetClientRect(hwnd, &rcClient);
for (y = 0 ; y < rcClient.bottom ; y += cySource)
for (x = 0 ; x < rcClient.right ; x += cxSource)
BitBlt (hdcClient, x, y, cxSource, cySource, hdcWindow, 0, 0, SRCCOPY) ;
ReleaseDC (hwnd, hdcWindow) ;
EndPaint (hwnd, &ps) ;
return 0;
但如果我写一个函数做同样的事情并标记上面的代码,结果是一个大图,谁能告诉我为什么?
此示例来自编程窗口CH14 BitBlt项目,我修改了一些。项目目标是使用来自窗口(0,0,cxSource,cySource)的小模式来填充客户区,但如果我在另一个函数中写这个,结果只有一个大图。 提前谢谢。