我为 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;
但是如果我写一个函数做同样的事情并标记上面的代码,结果就是一张大图,谁能告诉我为什么?
这个示例来自编程 windows CH14 BitBlt 项目,我修改了一些。项目目标是使用window(0,0,cxSource, cySource)中的小图案来填充客户区,但是如果我在另一个函数中写这个,结果是,只有一张大图。提前致谢。