Rysowanie na pulpicie

0

Mam kod, w którym zadeklarowano klasę

type
  TDesktopCanvas=class(TCanvas)
  private
    DC:HDC;
  itd...
  end;

Nazwa mówi sama za siebie. Dzięki niej można wykonywać operacje graficzne na pulpicie. Deklaracja konstruktora tej klasy wygląda następująco:

constructor TDesktopCanvas.Create;
begin
  inherited Create;
  DC:=GetDC(0);
  Handle:=DC;
end;

Czy może mi ktoś wyjaśnić dlaczego parametrem funkcji GetDC musi być tutaj 0 (zero)?

0

bo dając 0 pobiera uchwyt jakby ekranu zamiast 0 możesz dać GetDesktopWindow - będzie bardziej logicznie

0
Adamo napisał(a)

bo dając 0 pobiera uchwyt jakby ekranu zamiast 0 możesz dać GetDesktopWindow - będzie bardziej logicznie

...i tak też robiłem. Z tym, że po zastosowaniu GetDesktopWindow nic się nie rysuje. Sprawdziłem... U mnie GetDesktopWindow zwraca wartość 128 (dziesiętnie).

0

bo wtedy GetWindowDC zamiast GetDC chyba

0
Adamo napisał(a)

bo wtedy GetWindowDC zamiast GetDC chyba

Bingo! Tylko czemu tak się dzieje? GetDC udostępnia obszar kliencki gdy GetWindowDC udostępnia obszar całego okna?...

0

ja bym to opisał że GetDC daje wskaźnik do płótna utworzonego jako ... czy coś w tym stylu, a GetWindowDC daje wskaźnik do płótna okna o wskaźniku jak w parametrze

0

Rysowanie po pulpicie jest przesrane. Trzeba reagować na odmalowanie się pulitu(jak ktoś np. przesunie ikonkę). A to mimo wszystko jest przesrane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1