Страница 1 из 1

OnScreen Display

Добавлено: 18 май 2005, 22:41
sanek1998
Кто-нибудь знает как реализовать OnScreen Display(Как в JetAudio)?
То есть на экране поверх всех окон выводится надпись или картинка не мешающая работать мышью

Добавлено: 20 май 2005, 09:00
LAngel
Примерно так?

Код: Выделить всё

procedure drawonscreen;
var
  SC: TCanvas;
begin
  SC := TCanvas.Create;
  try
    SC.Handle := GetDC(0);
    SC.Rectangle(10,10,100,100);
  finally
    SC.Free;
  end;
end;

Добавлено: 21 май 2005, 19:50
sanek1998
Это рисовать на экране, так не пойдет (водишь мышью-картинка стирается). В JetAudio (как я понял), OSD - это полупрозрачная форма (OSD там работает только в Win2000/XP) и сквозь нее можно кликать, выделять и т.д.

Добавлено: 23 май 2005, 15:24
LAngel
ну тогда это надо копать сообщения. Что-то на ум приходит WM_HITTEST
поищи по поисковикам ;)

Добавлено: 23 май 2005, 16:18
Eugie

Добавлено: 26 май 2005, 16:34
sanek1998
ну тогда это надо копать сообщения. Что-то на ум приходит WM_HITTEST
Я попробовал вот так:

Код: Выделить всё

private   
    procedure WMNCHitTest(var M: TWMNCHitTest);
		  				message wm_NCHitTest;
................procedure TForm2.WMNCHitTest(var M: TWMNCHitTest);
begin
  inherited;
  if  M.Result = htClient then
   M.Result := htTRANSPARENT;
end;
end.
Но это работает только для окон моего же приложения, а нужно чтобы и с чужими окнами можно было работать! Как быть?