2011-04-01 48 views
1
> case WM_PAINT:   
         { 
>    hdc = BeginPaint(hWnd, &ps); 
>    // TODO: Add any drawing code here... 
>    RECT rt; 
>    GetClientRect(hWnd, &rt); 
>    HDC myHdc = CreateCompatibleDC(hdc); 
>    
>    DrawText(myHdc, szHello, strlen(szHello), &rt, DT_CENTER); 
>    BitBlt(hdc,0,0,rt.right-rt.left,rt.bottom-rt.top,myHdc,0,0,SRCCOPY); 
>    
>    EndPaint(hWnd, &ps);    
         } 
> 
>   break; 

爲什麼文本無法顯示在窗口?爲什麼Bitblt不能工作

回答

6

您需要創建位圖,並在您的DC選擇它:

RECT rt; 
GetClientRect(hWnd, &rt); 
HDC myHdc = CreateCompatibleDC(hdc); 

CBitmap bitmap = CreateCompatibleBitmap(hdc, width, height); 
HBITMAP oldBitmap = ::SelectObject(myHdc, bitmap); 

DrawText(myHdc, szHello, strlen(szHello), &rt, DT_CENTER); 
BitBlt(hdc,0,0,rt.right-rt.left,rt.bottom-rt.top,myHdc,0,0,SRCCOPY); 

::SelectObject(myHdc, oldBitmap); 

EndPaint(hWnd, &ps); 
+1

權。當您使用CreateCompatibleDC時,我相信選中到DC中的位圖是1x1 1位位圖,這不是非常有用。 – 2011-04-01 04:34:25