Já es possivel fazer isso usando fivewin sem libs adicionais ?
Veja aqui; http://www.redstarsoft.com.br/sample.rar
Gracias
// Moving a window, with the mouse, without a caption
#include "FiveWin.ch"
function Main()
local oWnd, nRowPos, nColPos, lDrag := .F., oCrsHand
DEFINE CURSOR oCrsHand HAND
DEFINE WINDOW oWnd STYLE WS_POPUP COLOR "W/R"
oWnd:bLClicked := { | nRow, nCol | nRowPos := nRow, nColPos := nCol, lDrag := .T., oWnd:oCursor := oCrsHand }
oWnd:bMMoved = { | nRow, nCol | If( lDrag, oWnd:Move( oWnd:nTop + nRow - nRowPos,;
oWnd:nLeft + nCol - nColPos ),) }
oWnd:bLButtonUp := { || lDrag := .F., oWnd:oCursor := nil }
ACTIVATE WINDOW oWnd
return nilAntonio,
isso nao trabalha pra mim no win XP ( FWH 902 ).
quando movo a tela ela se perde nas outras telas tenho que passar outra tela por cima
dela para ela aparcer certo novamente...
outra pergunta.
e como fazer para pegar a regiao q recebeu o click: exemplo odlg quero q pegue o click na top 10 left 10 to boot 20 right 20
tem como capturar o click dentro dessa regiao ?
gracias

oWnd:bMMoved = { | nRow, nCol | If( lDrag, oWnd:Move( oWnd:nTop + nRow - nRowPos,;
oWnd:nLeft + nCol - nColPos,,, .T. ),) }Antonio,
Perfect !!!!!!!! ![]()
// Moving a window, with the mouse, without a caption
#include "FiveWin.ch"
function Main()
local oWnd, nRowPos, nColPos, lDrag := .F., oCrsHand
DEFINE CURSOR oCrsHand HAND
lRECT:=lRectWIN():new()
lRECT:AddRect( 0, 0,100,100, {|| MsgInfo("Dentro","Inside") } )
DEFINE WINDOW oWnd STYLE WS_POPUP COLOR CLR_WHITE, CLR_BLUE
oWnd:bLClicked := { | nRow, nCol | iif(lRECT:Check(nRow, nCol),nil,( nRowPos := nRow, nColPos := nCol, lDrag := .T., oWnd:oCursor := oCrsHand) )}
oWnd:bMMoved = { | nRow, nCol | If( lDrag, oWnd:Move( oWnd:nTop + nRow - nRowPos, oWnd:nLeft + nCol - nColPos,,, .T. ),) }
oWnd:bLButtonUp := { || lDrag := .F., oWnd:oCursor := nil }
ACTIVATE WINDOW oWnd on paint(areal(oWNd))
return nil
function areal(lWin)
// quadrado marcando o local onde o click sera capturado
RoundRect( lWin:hDC, 0 , 0 , 100, 100, 0, 0)
return
Class lRecTWIN
data xWin
data aRec
method New() constructor
method AddRect(nTop, nLeft, nBottom, nRight, bAction) INLINE AAdd(::aRec, {nTop,nLeft,nBottom,nRight, bAction})
method Check()
endclass
method New() class lRectWIN
::arec:={}
return self
method Check(x,y) CLASS lRectWIN
local ret:=.f.
for n = 1 to len(::aRec)
if (x>::aRec[n][1] .and. y>::aRec[n][2] .and. x<::aRec[n][3] .and. y<::aRec[n][4])
if (::aRec[n][5]<>Nil)
eVal(::aRec[n][5])
endif
ret:=.t.
endif
next n
return(ret)
// Moving a window, with the mouse, without a caption
#include "FiveWin.ch"
function Main()
local oWnd, nRowPos, nColPos, lDrag := .F., oCrsHand, oBmp
DEFINE CURSOR oCrsHand HAND
DEFINE BITMAP oBmp FILENAME "test.bmp"
DEFINE WINDOW oWnd STYLE WS_POPUP COLOR "W/R"
oWnd:bLClicked := { | nRow, nCol | nRowPos := nRow, nColPos := nCol, lDrag := .T., oWnd:oCursor := oCrsHand }
oWnd:bMMoved = { | nRow, nCol | If( lDrag, oWnd:Move( oWnd:nTop + nRow - nRowPos,;
oWnd:nLeft + nCol - nColPos,,, .T. ),) }
oWnd:bLButtonUp := { || lDrag := .F., oWnd:oCursor := nil }
oWnd:SetSize( 221, 221 )
oWnd:Center()
ACTIVATE WINDOW oWnd ;
ON INIT SetTransparent( oWnd ) ;
ON PAINT PaintTransparent( hDC, oBmp:hBitmap, 0, 0 ) ;
ON RIGHT CLICK oWnd:End()
oBmp:End()
return nil
#define LWA_COLORKEY 1
#define GWL_EXSTYLE -20
#define WS_EX_LAYERED 524288
STATIC FUNCTION SETTRANSPARENT( oDlg )
SETWINDOWLONG( oDlg:hWnd, GWL_EXSTYLE, NOR( GETWINDOWLONG( oDlg:hWnd, GWL_EXSTYLE ), WS_EX_LAYERED ) )
SETLAYEREDWINDOWATTRIBUTES( oDlg:hWnd, CLR_RED,, LWA_COLORKEY )
RETURN NIL
function PaintTransparent( hDC, hBitmap, nRow, nCol )
local hBmpOld := SelectObject( hDC, hBitmap )
local nZeroZeroClr := GetPixel( hDC, 0, 0 )
local nOldClr
SelectObject( hDC, hBmpOld )
nOldClr = SetBkColor( hDC, nRGB( 255, 255, 255 ) )
TransBmp( hBitmap, nBmpWidth( hBitmap ), nBmpHeight( hBitmap ),;
nZeroZeroClr, hDC, nRow, nCol, nBmpWidth( hBitmap ), nBmpHeight( hBitmap ) )
SetBkColor( hDC, nOldClr )
return nilAntonio,
Quando eu movo a janela que esta com BMP fica lento a janela. e o Drzwin o exe funciona bem
movo a janela e o bmp acompanha sem ficar tremendo na tela.
pq sera ?
YO tentei hacer un vido con cantasia estudio para mostrar lo problema em lo movimento pero no sei porque
esto criado no fivewin no aparece na gravacao
y o que usa DrzWin aparece
coisa de loco em ???hehehe
Antonio tien alguna sugestion ?
oWnd:bLClicked := { | nRow, nCol | SetCapture( oWnd:hWnd ), nRowPos := nRow, nColPos := nCol, lDrag := .T.,;
oWnd:oCursor := oCrsHand }
...
oWnd:bLButtonUp := { || lDrag := .F., oWnd:oCursor := nil, ReleaseCapture() }Antonio,
Ainda continua com o problema, quando movo a tela rapidamente os cantos do bitmaps fica piscando...
Lailton,
Why do you need to move it so fast ?
Are you building a video game ? ![]()
hehehehhehe
No,
i will make a control for socket + biometric SDK griaule.
and i like of use it, more when move stay bad of screen,
i want use without lib of other people, and think that other people too have interesse in use it
so think that is good that fivewin native of support to this.
you think that can solve it ?
Thanks so much for your atencion.
y Antonio,
Quem sabe depois podemos hacer un FiveWinGAME
hehehehe ![]()
![]()