Главная страница
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.055 c
1-1155737555
vase21
2006-08-16 18:12
2006.10.01
Цифры в StringGrid


1-1155723489
Aleksandr.
2006-08-16 14:18
2006.10.01
Как отключать нажатие кнопок после выбора системной кнопки Help?


6-1147071006
dmitrlast
2006-05-08 10:50
2006.10.01
Работа с файлами по локальной сети


15-1157814167
ArtemESC
2006-09-09 19:02
2006.10.01
Английский...


15-1157125721
real
2006-09-01 19:48
2006.10.01
Генератор афоризмов - существует такое?