2014-01-07 41 views
1

這是我一直在使用一段時間的問題。我想要一個可拖動的矩形向用戶顯示他們在我的屏幕截圖程序中選擇的區域。我想這樣做的原因是用戶能夠選擇他們想要截圖的屏幕的一部分。我曾嘗試,但收效甚微下面的方法:Win 32 C++,在屏幕上繪製一個可拖動的矩形

void drawRect(){ 
HDC screenDC = ::GetDC(0); 
::Rectangle(screenDC, 200, 200, 300, 300); 
::ReleaseDC(0, screenDC); 
} 

現在,給這個方法,因爲信貸,但它一旦拖動已經停止了矩形畫一個矩形的方式,我期待但屏幕仍然存在。我已經看過擺脫這種方式,如更新矩形繼續顯示的窗口,但我沒有設法刪除它。除了這個問題之外,你必須重新繪製每個顯示器刷新的矩形並且矩形仍然存在,所以我留下了許多矩形畫在整個屏幕上,然後我必須將鼠標懸停或點擊這些畫出來的任何窗口以將它們移除。

+0

您使用的是哪個版本的Windows? 'GetDC(NULL)'從Windows Vista開始具有不同的行爲,屏幕DC的尺寸是所有顯示器的總和......在XP中,它僅限於在第一臺顯示器上運行的桌面的尺寸。因此,如果用戶試圖截取跨越多個顯示器的區域的屏幕截圖,則行爲將因您的版本(特別是,是否啓用桌面組合)而有所不同。無論如何,GDI並不是追求現代Windows的好代碼路徑。 –

+0

我正在使用的Windows 7. –

+0

如果這是一個壞的方法,你會建議我去做這個嗎? –

回答

1

改爲使用DrawFocusRect。再次繪製相同的矩形將其從屏幕上移除。