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);         

これは何もしなかった私の以前の試みです。明確にするために、画面全体を無地にしようとしています。

4

2 に答える 2

2

このコードは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 つのオプションは、描画に使用できるすべてのものの上にフルスクリーン ウィンドウを配置することです。

于 2012-09-15T03:49:57.027 に答える
1

全画面ウィンドウを作成し(最大化するだけでなく、複数のモニターのワークスペース全体をカバーします)、白くペイントします。

これは、他の全画面グラフィック アプリ (ゲーム、スクリーン セーバーなど) が行うことです。

于 2012-09-17T08:50:42.303 に答える