Canvas i odświeżanie paska zadań

0

Witam,
jak odświeżyć pasek zadań po którym rysuję?

Korzystam z takiego kodu:

  Canvas.Handle:=GetWindowDC(FindWindow('Shell_TrayWnd',nil));
  Canvas.Font.Size:=15;
  Canvas.Font.Color:=cl3DLight;
  Canvas.Brush.Style:=bsClear;
  Canvas.Refresh; // NIE DZIAŁA :-(
  Canvas.TextOut(1200,5,TimeToStr(Time));
0
Grudziecki napisał(a)

Witam,
jak odświeżyć pasek zadań po którym rysuję?

Korzystam z takiego kodu:

  Canvas.Handle:=GetWindowDC(FindWindow('Shell_TrayWnd',nil));
  Canvas.Font.Size:=15;
  Canvas.Font.Color:=cl3DLight;
  Canvas.Brush.Style:=bsClear;
  Canvas.Refresh; // NIE DZIAŁA :-(
  Canvas.TextOut(1200,5,TimeToStr(Time));

musisz go albo recznie zamalowac jakims kolorem
albo dac invalidateRect()

0

Chodzi Ci o coś takiego :

 
  Canvas.Handle:=GetWindowDC(FindWindow('Shell_TrayWnd',nil));
  Canvas.Font.Size:=15;
  Canvas.Font.Name:='Algerian';
  Canvas.Font.Color:=cl3DLight;
  Canvas.Brush.Style:=bsClear;
  Canvas.Refresh;
  InvalidateRect(GetWindowDC(FindWindow('Shell_TrayWnd',nil)), nil, true); // DODANY KOD
  UpdateWindow(GetWindowDC(FindWindow('Shell_TrayWnd',nil)));  // DODANY KOD
  Canvas.TextOut(1200,5,TimeToStr(Time));

Nadal nie odświeża się.

0

hmm.. no faktycznie. ale powod jest prosty.
napis zostaje namalowany nie na pasku co na zasobniku i na zegarku a to sa inne okna.
musisz <ort>odswierzyc </ort>kazde "okno" nad ktorym widnieje napis:
u mnie dziala:

  h:=FindWindow('Shell_TrayWnd',nil); //PASEK ZADAN
    InvalidateRect(h, nil, true);
    UpdateWindow(h);
  h:=findwindowex(h,0, 'TrayNotifyWnd', nil); //OBSZAR ZASOBNIKA SYSTEMOWEGO (IKONKI)
    InvalidateRect(h, nil, true);
    UpdateWindow(h);
  h:=findwindowex(h,0, 'TrayClockWClass', nil);//ZEGAR
    InvalidateRect(h, nil, true);
    UpdateWindow(h);
0

mozna tez postawic hooka i lapac komunikat wysylany o potrzebie odmalowania

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