为什么BitBlt在不同的地方有不同的结果

时间:2012-08-04 07:16:17

标签: winapi bitblt

我为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)的小模式来填充客户区,但如果我在另一个函数中写这个,结果只有一个大图。 提前谢谢。

0 个答案:

没有答案