[delphi] odświeżanie pulpitu

Odpowiedz Nowy wątek
poczatkujący
2007-12-16 02:53
poczatkujący
0

za pomocą

      DC := BeginPaint(GetDesktopListViewHandle, PS);
      SetBkMode(DC, TRANSPARENT);
      SetTextColor(DC, RGB(0, 0, 0));
      TextOut(DC, 1024 - 200, i, Pchar(s), Length(s));
      EndPaint(GetDesktopListViewHandle, PS);

pisze na pulpicie pewien napis..
po naciśnięciu przycisku zmienna "s" sie zmienia.
co należy dodać do procedury przycisku, aby po zmianie wartości, widok pulpitu odświeżył sie, tak aby było widać od razy nowy napis, gdyż zmienia się on dopiero po kliknięciu prawym przyciskiem na pulpit i kliknięciu "odśwież".
próbowałem używać 2 procedur, które były w faq, ale niestety odświeżają one pulpit, ale nie mój napis.
proszę o pomoc.

Pozostało 580 znaków

2007-12-16 13:02

Rejestracja: 15 lat temu

Ostatnio: 9 lat temu

0

proponowal bym zastosowac funkcje InvalidateRect i odmalowac tylko ten fragment, ktory Ciebie interesuje.


Pozostało 580 znaków

poczatkujący.
2007-12-16 13:35
poczatkujący.
0

no tak... a wiec mam:

    r.Left := 700;
    r.Top :=2;
    r.right := 1024;
    r.Bottom :=300;
    InvalidateRect(GetDesktopListViewHandle, r, false);

nie jestem pewien co do parametrów "r", w każdym razie interesuje mnie prostokąt u góry po prawej stronie. około 100/300, tak mniej więcej.

Moglbyś mi poradzić, jak powinna wyglądać ta funkcja ?

Pozostało 580 znaków

2007-12-16 15:10

Rejestracja: 15 lat temu

Ostatnio: 9 lat temu

0

http://msdn2.microsoft.com/en-us/library/ms534893.aspx

InvalidateRect(GetDesktopListViewHandle,RECT(,,,),true)

oczywiscie jak po pulpicie rysujemy, bo jak jest jeszcz jakies okno to nie ...


Pozostało 580 znaków

poczatkujący
2007-12-16 17:37
poczatkujący
0

więc mam:

    InvalidateRect(GetDesktopListViewHandle,rect(800, 10, 1024, 300),true)

i mam blad Incopatible Types "TRect" and "PRect".

dlatego wcześniej dałem zmienna r: Prect; ale też nie działało.

jakiś inny pomysł?

Pozostało 580 znaków

2007-12-16 19:17

Rejestracja: 17 lat temu

Ostatnio: 7 lat temu

0

Przecież ta metoda oczekuje na wskaźnik... do struktury typu TRect, więc musisz przekazać wskaźnik, a nie całą strukturę.

Pozostało 580 znaków

poczatkujacy.
2007-12-16 20:46
poczatkujacy.
0

ok, teraz mam kod :

r: Trect;

      r.Left := 700;
      r.Top := 1;
      r.right:=1024;
      r.Bottom:=300;
      InvalidateRect(GetDesktopListViewHandle,@r,true);

ale tekst zamiast się odświeżać, po prostu znika.

i w dalszym ciągu mam problem...z prawidłowym odświeżeniem.

Pozostało 580 znaków

poczatkujacy.
2007-12-16 21:22
poczatkujacy.
0

i udało mi się :)
dałem:

    InvalidateRect(GetDesktopListViewHandle,@r,true);
    PostMessage(FindWindow('Mojprogram', nil), PAIN, 0, 0);

gdzie pain odpowiada za komunikat WM_PAINT w DLLce.

ale mam kolejny problem, po nacisnieciu przycisku tekst się elegancko odświeża, natomiast, w DLLce z HOOKIEM.....po jakim komunikacie wstawić to :

    InvalidateRect(GetDesktopListViewHandle,@r,true);
    PostMessage(FindWindow('Mojprogram', nil), PAIN, 0, 0);

aby po np. zminimalizowaniu okna, które zasłaniało napis, napis się odnowił (gdy jakies okno go przykryje znika), albo jakiś komunika, który by odświeżał napis co powiedzmy sekunde ? ( drugie pytanie, czy takie odświeżanie co sekunde tym sposobem nie byłoby zbyt pamięcio-żerne ?) ?

Pozostało 580 znaków

2007-12-17 00:47

Rejestracja: 15 lat temu

Ostatnio: 9 lat temu

0

skoro juz robisz hooka to lap komunikaty odmalowywujace i w nich odmalowywuj (wm_paint wm_erasebk, wm_ncpaint ....).


Pozostało 580 znaków

pocztkujacy.
2007-12-17 14:24
pocztkujacy.
0

hmm a moglbys mi podac stronke ze wszystkimi komunikatami odpowiadającymi za malowanie ? np. jak odsłoni sie pulpit ?

btw. hooka robie, ponieważ moje przyciski są tworzone na pulpicie, a musze jakoś wyłapywać czy zostały nacisniete :P

Pozostało 580 znaków

2007-12-17 16:32

Rejestracja: 15 lat temu

Ostatnio: 9 lat temu

0

a wpisales do googli ktorekolwiek z nich ... pierwszy link, WM_NCPAINT i szczesliwy traf !

Painting and Drawing Messages
http://msdn2.microsoft.com/en-us/library/ms534875.aspx

BTW jak juz maja byc zmiany na forum to jestem za emotikonka w stylu rece opadaja, sciana mi nie do konca pasuje


Pozostało 580 znaków

Odpowiedz

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

Robot: CCBot