Hi!

If you move a window normally under Win98, the real window stays at his old position and you can only drag around such a spotted rectangle and if you then release the left mousebutton the window is drawn into its new position (into the strange rectangle you moved around before).
So, under WinXP it is done in another way, the window is directly drawn just when you move it (I think this is standard under WinXP)
I saw that this is also possible under Win98, I think there must be trick, so can you tell me this ...

(Hope you got the point)

thx
Posted on 2003-10-19 08:00:47 by ChigpA
Hi ChigpA,

Right click desktop.
Click ActiveDesktop,Customize
Click Effect tab
Check "Show window contents while dragging.

Btw, this post doesn't belong in this forum.

best regards,

czDrillard
Posted on 2003-10-19 10:57:24 by czDrillard
I don't want to do this only for me. I want to program that. Cause on my machine this feature is currently deactivated but I have a program (RGN-Creator) who does this what I explained before although.
So there must be a trick that your program does this even if deactivated.

thx

P.S.: So I think this thread belongs to where I posted it before
Posted on 2003-10-19 12:03:08 by ChigpA
make only temporary changes:


invoke SystemParametersInfo,SPI_SETDRAGFULLWINDOWS,1,0,0


make constant change:


invoke SystemParametersInfo,SPI_SETDRAGFULLWINDOWS,1,0,SPIF_UPDATEINIFILE or SPIF_SENDCHANGE
Posted on 2003-10-19 14:09:36 by Ultrano
I think he wants only his own application to have "show contents while dragging", which would be useful when doing custom windows...
Posted on 2003-10-19 14:36:15 by f0dder
I am sure he won't need that - every Win>=95 has this option, and the "temporary" code I wrote above takes effect on the system only till the proggie exits.
But, in case I'm wrong, he'll need this algorithm of work:



.data
isDragging dd ?
where POINT <>
.code

OnMouseDown proc hWnd,x,y
local rect:RECT
invoke GetWindowRect,hWnd,addr rect
mov isDragging,1
mov eax,rect.left
sub eax,x
mov where.x,eax
mov eax,rect.top
sub eax,y
mov where.y,eax
invoke SetCapture,hWnd
ret
OnMouseDown endp
OnMouseUp proc
.if isDragging
mov isDragging,0
invoke ReleaseCapture
.endif
ret
OnMouseUp endp
OnMouseMove proc hWnd,x,y
.if isDragging
mov eax,where.x
mov ecx,where.y
add eax,x
add ecx,y
invoke SetWindowPos,hWnd,HWND_TOP,eax,ecx,0,0,SWP_NOSIZE
.endif
ret
OnMouseMove endp

WindowLoop proc hWnd,msg,w,l
.if msg==WM_LBUTTONDOWN
mov eax,l
mov ecx,eax
movsx eax,ax
shr ecx,16
movsx ecx,cx
invoke OnMouseDown,hWnd,eax,ecx
.elseif msg==WM_MOUSEMOVE
mov eax,l
mov ecx,eax
movsx eax,ax
shr ecx,16
movsx ecx,cx
invoke OnMouseMove,hWnd,eax,ecx
.elseif msg==WM_LBUTTONUP
invoke OnMouseUp
.else
invoke DefWindowProc,hWnd,msg,w,l
.endif
ret
WindowLoop endp
Posted on 2003-10-19 16:01:14 by Ultrano
thx guys I'll try evrything
Posted on 2003-10-20 11:08:07 by ChigpA