Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
1-1155738480
vase21
2006-08-16 18:28
2006.10.01
Фотография выделенной части формы


2-1158215420
Ola
2006-09-14 10:30
2006.10.01
Строки


15-1158126179
Dima L
2006-09-13 09:42
2006.10.01
delphi 10 lite


6-1147237414
hcsr
2006-05-10 09:03
2006.10.01
Как программно узнать соеденён ли комп с инетом


8-1141700996
Максиммм
2006-03-07 06:09
2006.10.01
Скрыть курсор




   Наверх