Holas,
hay alguna manera de mover un dialogo con el mouse sin que tenga título, pinchando en cualquier lugar y moviendolo
saludos
Marcelo
Holas,
hay alguna manera de mover un dialogo con el mouse sin que tenga título, pinchando en cualquier lugar y moviendolo
saludos
Marcelo
Marcelo,
Revisa FWH\samples\testmmov.prg
Antonio,
muchas gracias, lo estoy probando con diálogos definidos en recursos, y el funcionamiento es errático, es necesario jugar un poco m'as, pero es buen inicio, gracias
saludos
Marcelo
DEFINE DIALOG oDLg ....
DEFINE CURSOR oCur ...
...
...
oDlD:bLClicked := { || MovWin(oDlGD,aCoors,oCur) }
...
ACTIVATE DIALOG oDlg...
FUNCTION MovWin(oDW,aCoor,oCur)
LOCAL aXY := GetCursorPos()
LOCAL aPun := GetWndRect(oDW:hWnd)
aXY[1] -= aPun[1]
aXY[2] -= aPun[2]
IF aXY[1] > aCoor[nTop] .AND. aXY[1] < aCoors[nBottom] .AND. aXY[2] > aCoors[nLeft] .AND. aXY[2] < aCoors[nRight]
DO WHILE GetKeyState( VK_LBUTTON )
SetCursor( oCur:hCursor )
aPun := GetCursorPos()
MoveWindow( oDW:hWnd, aPun[1]-aXY[1], aPun[2]-aXY[2],,, .T. )
SysRefresh()
ENDDO
CursorArrow()
ENDIF
RETURN .T.DEFINE DIALOG oDLg ....
DEFINE CURSOR oCur ...
...
...
oDlD:bLClicked := { || MovWin(oDlGD,oCur) }
...
ACTIVATE DIALOG oDlg...
FUNCTION MovWin(oDW,oCur)
LOCAL aXY := GetCursorPos()
LOCAL aPun := GetWndRect(oDW:hWnd)
aXY[1] -= aPun[1]
aXY[2] -= aPun[2]
DO WHILE GetKeyState( VK_LBUTTON )
SetCursor( oCur:hCursor )
aPun := GetCursorPos()
MoveWindow( oDW:hWnd, aPun[1]-aXY[1], aPun[2]-aXY[2],,, .T. )
SysRefresh()
ENDDO
CursorArrow()
RETURN .T.Antolin,
muchas gracias por compartir tu solución
saludos
Marcelo Vía
Muchas Gracias Antolin
A mi también me sirvió.
Saludos,
Adhemar
acuellar wrote:Muchas Gracias Antolin
A mi también me sirvió.
Saludos,
Adhemar
Funciona perfectamente, muchísimas gracias ...
Saludos
Muchas gracias.
Me ha venido muy bien.
DEFINE WINDOW oWndK MDICHILD FROM 0,0 to 2,2 OF oWnd BORDER NONE NOSYSMENU NOCAPTION TITLE cTitle ICON "SVITE"
DEFINE DIALOG oDlg RESOURCE "KARDEX" OF oWndK
oDlg:bLClicked := { || MovWin(oDlg, oCursor) } // para mover el objeto
aEval(oDlg:aControls,{|oC|iif(oC:ClassName()="TBTNBMP",oC:oCursor:=oCursor,)})
ACTIVATE DIALOG oDlg CENTER NOWAIT ;
ON INIT (oDlg:Move( 0, 0 ), ;
VALID (oWndK:End() , lSalir )
oWndK:bGotFocus = { || oDlg:SetFocus() }
ACTIVATE WINDOW oWndK ;
ON INIT (oWndK:Move(0,0), oWndK:SetSize( oDlg:nWidth, oDlg:nHeight ) ) ;
ON RESIZE (oWndK:SetSize( oDlg:nWidth, oDlg:nHeight ) ) ;
VALID (lSalir)oDlg:bLClicked := { || MovWin(oChild, oCursor) } //enviandole ventana hija MDI
#define SM_CYCAPTION 4
#define SM_CYFRAME 33
#define SM_CXPADDEDBORDER 92
//--------------------------//
FUNCTION MovWin(oDW,oCur)
LOCAL aXY := GetCursorPos()
LOCAL aPun := GetWndRect(oDW:hWnd)
local nHeight
IF oDW:CLASSNAME() == "TMDICHILD"
nHeight := ( GetSysMetrics(SM_CYFRAME) + ;
GetSysMetrics(SM_CYCAPTION) + ;
GetSysMetrics(SM_CXPADDEDBORDER) ) * 2.3666
aXY[1] -= (aPun[1]-nHeight)
aXY[2] -= aPun[2]+1
ELSE
aXY[1] -= aPun[1]
aXY[2] -= aPun[2]
ENDIF
DO WHILE GetKeyState( VK_LBUTTON )
SetCursor( oCur:hCursor )
aPun := GetCursorPos()
MoveWindow( oDW:hWnd, aPun[1]-aXY[1], aPun[2]-aXY[2],,, .T. )
SysRefresh()
ENDDO
CursorArrow()
RETURN .T.Funcionando en Windows 10
Salu2
Willi