Page 1 of 1

Cursor parpadea

PostPosted: Thu May 02, 2024 6:01 pm
by antolin
Buenas a todos. Hacía mucho tiempo que no entraba en el foro.

Tengo un problemilla con un cursor.
En un programilla que estoy desarrollando, en algunos dialogos quiero que cuando pinche sobre cierta zona superior el cursor cambie a uno propio. Lo hago llamando a ::bMMoved y funciona. Pero parpadea. Alterna de flecha a mi cursor una y otra vez y no hay manera de que realice un recorrido limpio. Alguna solución

Esta es mi función:

Code: Select all  Expand view

FUNCTION MovWin(oDW,aCur,nLimit,nVLmit)
   LOCAL aXY   := GetCursorPos()
   LOCAL aPun  := GetWndRect(oDW:hWnd)
   LOCAL aBMov := oDW:bMMoved

   DEFAULT nLimit := oDW:nHeight, ;
       nVLmit := oDW:nWidth

   aXY[1] -= aPun[1]
   aXY[2] -= aPun[2]
   IF aXY[1] > nLimit .OR. aXY[2] > nVLmit
      RETURN NIL
   ENDIF
   *
   oDW:bMMoved := { || SetCursor( aCur[2] ) }
   DO WHILE GetKeyState( VK_LBUTTON )
      aPun := GetCursorPos()
      MoveWindow( oDW:hWnd, aPun[1]-aXY[1], aPun[2]-aXY[2],,, .F. )
      SysRefresh()
   ENDDO
   oDW:bMMoved := aBMov
RETURN .T.