Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

Скрыть курсор   Найти похожие ветки 

 
Максиммм   (2006-03-07 06:09) [0]

Как при проигрываниии клипа или фильма скрыть курсор мыши если она не двигается, а если есть движение снова показать (как в привычных плеерах) ..... Заранее спасибо ....


 
grouzd[E]v ©   (2006-03-07 14:52) [1]

ShowCursor и MouseMove

---
... we are walking on a thin line and you better avoid the risk ...


 
Noby   (2006-03-09 15:21) [2]

Сделай так...


Type
 TCursorVisibleEvent = procedure (Sender: TObject; Visible : Boolean) of object;
 TVideoForm = class(TForm)
....
private
 private
   FIdleCursor : Integer; // через сколько убирать курсор
   procedure MyIdleHandler(Sender: TObject; var Done: Boolean);
end;

implementation
....
procedure TVideoForm.FormCreate(Sender: TObject);
begin
 FIdleCursor := 5000;
 Application.OnIdle := MyIdleHandler;
end;

procedure TVideoForm.MyIdleHandler(Sender: TObject; var Done: Boolean);
 var
   pt : TPoint;
 begin
   Done := True;
  if (FIdleCursor = 0) or (csDesigning in ComponentState) or (not IsFullScreen) then exit;
   if (GetTickCount - LCursorMov >= Cardinal(FIdleCursor)) then
     begin
       if Cursor <> crNone then
       begin
         RememberCursor := Self.Cursor;
         Cursor := crNone;
         GetCursorPos(pt);
         SetCursorPos(pt.x, pt.y);
         if Assigned(FOnCursorVisible) then
           FOnCursorVisible(nil, False);
       end;
     end
     else
     begin
       if (not IsHidden)then
       begin
         IsHidden := True;
         GetCursorPos(pt);
         SetCursorPos(pt.x, pt.y);
         if Assigned(FOnCursorVisible) then
           FOnCursorVisible(nil, False);
       end;
     end;
   end;


Удобно и работает как, к примеру, Bsplayer ;-).


 
Noby   (2006-03-09 15:39) [3]

Да вот еще кое что забыл... Надо повесить на форму обработчик OnMouse Move :(


Type
...
   procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
private
   isFullScreen         : Boolean; // просто для проверки (если в маленком окне играет то курсор не прячем)
   FOnCursorVisible   : TCursorVisibleEvent;
   RememberCursor   : TCursor;
   FIdleCursor          : Integer;
   LMousePos          : TPoint;
   LCursorMov         : DWord;
   IsHidden             : Bool;
end;

...
implementation

procedure TVideoForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
var
MPos : TPoint;
 begin
     MPos := Point(X, Y);

   if (LMousePos.X <> MPos.X) or (LMousePos.Y <> MPos.Y) then
   begin
     LMousePos.X := MPos.X;
     LMousePos.Y := MPos.Y;
     LCursorMov := GetTickCount;
     begin
         if self.Cursor = crnone then
         begin
           self.Cursor := RememberCursor;
           if Assigned(FOnCursorVisible) then
             FOnCursorVisible(self, True);
         end
       else
       begin
         if IsHidden then
         begin
           IsHidden := False;
          if Assigned(FOnCursorVisible) then
             FOnCursorVisible(Self, True);
         end;
       end;
     end;
 end;
end;


Ну вот вроде и все...



Страницы: 1 вся ветка

Текущий архив: 2006.10.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.052 c
15-1158037541
Ega23
2006-09-12 09:05
2006.10.01
С Днём рождения! 12 сентября


1-1155970802
_HAWK_
2006-08-19 11:00
2006.10.01
Режим "Эскизы страниц"


3-1154073427
RomanH
2006-07-28 11:57
2006.10.01
Тривиальный SQL-запрос


5-1140003051
Святослав
2006-02-15 14:30
2006.10.01
Как перерисовать картинку?


1-1155737555
vase21
2006-08-16 18:12
2006.10.01
Цифры в StringGrid