Czyszczenie ekranu z FillRect

Czyszczenie ekranu z FillRect
S1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Witam. Mam oto taki kodzie gdzie wyświetla mi na ekranie niebieski kwadrat. Chciałbym zrobić tak, że po 5 sek tek kwadrat zniknie bez zamykania aplikacji, tylko nigdzie nie mogę znaleźć funkcji która by usuwała FillRect lub czyściła ekran z tej funkcji.

Kopiuj
#include <iostream>
#include <Windows.h>

int main()
{
	Sleep(3000);

	ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false);

	HDC hDC_Desktop = GetDC(0);

	RECT rect = { 20, 20, 200, 200 };
	HBRUSH Brush = CreateSolidBrush(RGB(0, 0, 255));

	FillRect(hDC_Desktop, &rect, Brush);

	DeleteObject(Brush);

	Sleep(10000);

	return 0;
}
cerrato
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 9016
1

Nie ma czegoś takiego, jak "usunięcie FillRect". Jak coś zostanie na oknie namalowane, to są dwie opcje, żeby się tego pozbyć:
1) zakrycie tego czegoś czymś innym, czyli np. narysowanie w tym miejscu prostokąta w kolorze tła
**2) **wymuszenie odmalowania okna - chociażby korzystając z czegoś w stylu https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-invalidaterect

S1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
2

Dziękuję za nakierowanie. Działa :) Poniżej daję kod gdyby ktoś potrzebował

Kopiuj
#include <iostream>
#include <Windows.h>

int main()
{
	Sleep(3000);
	ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false);

	HDC hDC_Desktop = GetDC(0);
HWND okno = GetActiveWindow();

	RECT rect = { 20, 20, 200, 200 };
	HBRUSH Brush = CreateSolidBrush(RGB(0, 0, 255));

	FillRect(hDC_Desktop, &rect, Brush);

	Sleep(5000);

	InvalidateRect(okno, 0, 0);

	DeleteObject(Brush);

	Sleep(10000);
	return 0;
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.