2014-03-03 67 views
0

我正試圖在現有窗口上繪畫。最終我想在窗口周圍繪製邊框。但現在我只是試圖畫一個窗口。這是我在做什麼在現有窗口上繪畫

static PAINTSTRUCT ps; 
static HDC hDC; 

RECT rect; 
rect.left = 0; 
rect.right = 100; 
rect.top = 0; 
rect.bottom = 100; 

HBRUSH hBrush = CreateSolidBrush(RGB(50,100,255)); 
HWND hWnd = FindWindow("Notepad++", 0); 
hDC = BeginPaint(hWnd, &ps); 

    FillRect(hDC, &rect, hBrush); 

EndPaint(hWnd, &ps); 

不幸的是,這對記事本窗口沒有任何作用。我在這裏錯過了什麼嗎?有什麼建議麼 ?

回答

4

BeginPaint和EndPaint只適用於處理WM_PAINT消息。他們給你一個被截斷到無效區域的HDC。

如果您正在使用GetDC()以外的地方繪製HDC以供使用。

+3

還要注意,WM_PAINT以外的任何繪畫將在下一次窗口處理WM_PAINT時丟失。一般來說,你不應該在你自己的窗戶上畫畫,正是出於這個原因。 –

+0

真正的答案可能是您需要對窗口進行子類化,允許WM_PAINT消息通過,然後在回來的時候繪製。但是如果你對答案感到滿意, –