OnScreen Display

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
sanek1998
Сообщения: 3
Зарегистрирован: 18 май 2005, 22:05

Кто-нибудь знает как реализовать OnScreen Display(Как в JetAudio)?
То есть на экране поверх всех окон выводится надпись или картинка не мешающая работать мышью
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Примерно так?

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

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;
С уважением, Lost Angel...
sanek1998
Сообщения: 3
Зарегистрирован: 18 май 2005, 22:05

Это рисовать на экране, так не пойдет (водишь мышью-картинка стирается). В JetAudio (как я понял), OSD - это полупрозрачная форма (OSD там работает только в Win2000/XP) и сквозь нее можно кликать, выделять и т.д.
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

ну тогда это надо копать сообщения. Что-то на ум приходит WM_HITTEST
поищи по поисковикам ;)
С уважением, Lost Angel...
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

sanek1998
Сообщения: 3
Зарегистрирован: 18 май 2005, 22:05

ну тогда это надо копать сообщения. Что-то на ум приходит 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.
Но это работает только для окон моего же приложения, а нужно чтобы и с чужими окнами можно было работать! Как быть?
Ответить