2012-09-15 46 views
1
RECT rect; 
    HWND hwnd = GetDesktopWindow(); 
    LockWindowUpdate(hwnd); 
    HDC hdc = GetDC(hwnd); 
    HBRUSH hbrush = CreateSolidBrush(RGB(255,0,0)); 
    GetWindowRect(hwnd, &rect); 
    FillRect(hdc, &rect, hbrush);   

這是我以前沒有做過的嘗試。爲了清楚起見,我正在嘗試將整個屏幕着色爲純色。如何在Win32中對整個屏幕的純色進行着色

+2

正如克里斯在他的回答結束時提到的,最好的方法是創建一個與整個屏幕大小相同的窗口,並將其塗成綠色。這樣,當您移除窗口時,桌面將重新恢復正常,而且其他重新繪製也不會干擾您的窗口。一般來說,您不應該在不屬於您的窗戶的HDC上繪畫。但是,無論如何,也許值得嘗試一下,以便您可以看到它有什麼問題:例如,等一會兒,您會看到狀態欄中的時鐘重繪本身。 – BrendanMcK

+1

我同意。做任何事情的最佳方式是以最少的次數違反其他程序的隱私,並且在另一個程序具有相同想法的情況下發生衝突的可能性最小。 – chris

回答

1

此代碼使用GDI(你似乎可以用):

#include <windows.h> 

int main() { 
    HDC screenDC = GetDC(NULL); //NULL gets whole screen 
    HBRUSH brush = CreateSolidBrush(RGB(255,0,0)); //create brush 
    SelectObject(screenDC, brush); //select brush into DC 
    Rectangle(screenDC, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN)); //draw rectangle over whole screen 
    //clean up stuff here 
    return 0; 
} 

這意味着作爲一個例子,而不是一個強大的解決方案。例如,選擇回到DC的前一個刷子總是一個好主意。釋放DC也是如此。另一種選擇是將全屏窗口放在您可以用來繪製的所有內容之上。

1

創建一個全屏窗口(不只是最大化,但覆蓋多個顯示器的整個工作區)並將其塗成白色。

這是其他全屏圖形應用程序(遊戲,屏幕保護程序等)所做的。

相關問題