Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' this is PowerBasic syntax
- ' not going to try and weed out the variables that are not in used for this
- ' if you want to see the program this is used in in action
- ' visit my subsite foxedit.dreammakersguild.com and look in the downloads
- ' for Image Quick
- LOCAL ImageFileName, uFileName AS STRING
- STATIC hSourceImage AS DWORD
- STATIC hIcon AS DWORD
- LOCAL oldIcon AS DWORD
- LOCAL hLoadImage AS DWORD
- STATIC FullScreen AS LONG
- STATIC isCaptured AS LONG
- STATIC winSize, capSize AS RECT
- LOCAL clientSize AS RECT
- STATIC mouseCapturedPos AS POINTS
- LOCAL mouseMovePos AS POINTS
- LOCAL mouseMoveDifference AS POINTS
- LOCAL hResult AS LONG
- LOCAL DeskSize, MySize AS MYPOINTS
- LOCAL Work AS STRING
- LOCAL hCursor AS DWORD
- STATIC moveDirection AS LONG
- LOCAL mousePos AS POINTAPI
- STATIC LastFilePath AS STRING
- LOCAL strCaption AS ASCIIZ * 80
- STATIC pDropTarget AS IDropTargetImpl
- CASE %WM_LBUTTONDOWN
- IF (ISFALSE(FullScreen)) THEN
- SetCapture(hWnd)
- isCaptured = %TRUE
- mouseCapturedPos.x = LO(WORD, lParam)
- mouseCapturedPos.y = HI(WORD, lParam)
- GetWindowRect hWnd, capSize
- mouseMovePos.x = LO(WORD, lParam)
- mouseMovePos.y = HI(WORD, lParam)
- GetClientRect hWnd, clientSize
- moveDirection = GetMovementDirection(clientSize, mouseMovePos, %TRUE)
- hCursor = GetCorrectCursor(moveDirection)
- SetCursor hCursor
- ' Work = "Mouse Start ("& FORMAT$(mouseCapturedPos.x) &","& FORMAT$(mouseCapturedPos.y) &")"
- ' #DEBUG PRINT Work
- END IF
- CASE %WM_LBUTTONUP
- ReleaseCapture()
- isCaptured = %FALSE
- IF ((moveDirection > 0) AND (moveDirection <> 5)) THEN
- hResult = CheckMenuRadioItem(g_MainMenu, %IDM_SCALE_BEGIN, %IDM_SCALE_END, %IDM_SCALE_CUSTOM, %MF_BYCOMMAND)
- END IF
- moveDirection = 0
- ' InvalidateRect hWnd, BYVAL 0, %TRUE
- CASE %WM_MOUSEMOVE ' received on mouse move over the main window
- mouseMovePos.x = LO(WORD, lParam)
- mouseMovePos.y = HI(WORD, lParam)
- IF (ISTRUE(isCaptured)) THEN
- hCursor = GetCorrectCursor(moveDirection)
- SetCursor hCursor
- mouseMovePos.x = LO(WORD, lParam)
- mouseMovePos.y = HI(WORD, lParam)
- GetWindowRect hWnd, winSize
- ' Work = "Mouse Move From ("& FORMAT$(mouseCapturedPos.x) &","& FORMAT$(mouseCapturedPos.y) &")" _
- ' &" To ("& FORMAT$(mouseMovePos.x) &","& FORMAT$(mouseMovePos.y) &")" _
- ' &" Difference ("& FORMAT$(mouseMoveDifference.x) &","& FORMAT$(mouseMoveDifference.y) &")"
- ' #DEBUG PRINT Work
- mouseMoveDifference.x = mouseMovePos.x - mouseCapturedPos.x
- mouseMoveDifference.y = mouseMovePos.y - mouseCapturedPos.y
- mySize.iWidth = winSize.nRight - winSize.nLeft
- mySize.iHeight = winSize.nBottom - winSize.nTop
- SELECT CASE moveDirection
- CASE 0 ' this should not happen
- BEEP
- CASE 1 ' moving lower left corner
- winSize.nLeft = winSize.nLeft + mouseMoveDifference.x
- mySize.iWidth = winSize.nRight - winSize.nLeft
- mySize.iHeight = mySize.iHeight + mouseMoveDifference.y
- mouseCapturedPos.y = mouseMovePos.y
- CASE 2 ' moving bottom edge
- mySize.iHeight = mySize.iHeight + mouseMoveDifference.y
- mouseCapturedPos.x = mouseMovePos.x
- mouseCapturedPos.y = mouseMovePos.y
- CASE 3 ' moving lower right corner
- mySize.iWidth = mySize.iWidth + mouseMoveDifference.x
- mySize.iHeight = mySize.iHeight + mouseMoveDifference.y
- mouseCapturedPos.x = mouseMovePos.x
- mouseCapturedPos.y = mouseMovePos.y
- CASE 4 ' moving left edge
- winSize.nLeft = winSize.nLeft + mouseMoveDifference.x
- mySize.iWidth = winSize.nRight - winSize.nLeft
- CASE 5 ' moving position
- winSize.nLeft = winSize.nLeft + mouseMoveDifference.x
- winSize.nTop = winSize.nTop + mouseMoveDifference.y
- CASE 6 ' moving right edge
- mySize.iWidth = mySize.iWidth + mouseMoveDifference.x
- mouseCapturedPos.x = mouseMovePos.x
- mouseCapturedPos.y = mouseMovePos.y
- CASE 7 ' moving upper left corner
- winSize.nTop = winSize.nTop + mouseMoveDifference.y
- mySize.iHeight = winSize.nBottom - winSize.nTop
- winSize.nLeft = winSize.nLeft + mouseMoveDifference.x
- mySize.iWidth = winSize.nRight - winSize.nLeft
- CASE 8 ' moving top
- winSize.nTop = winSize.nTop + mouseMoveDifference.y
- mySize.iHeight = winSize.nBottom - winSize.nTop
- CASE 9 ' moving upper right corner
- winSize.nTop = winSize.nTop + mouseMoveDifference.y
- mySize.iHeight = winSize.nBottom - winSize.nTop
- mySize.iWidth = mySize.iWidth + mouseMoveDifference.x
- mouseCapturedPos.x = mouseMovePos.x
- END SELECT
- IF (MySize.iWidth < 32) THEN
- MySize.iWidth = 32
- END IF
- IF (mySize.iHeight < 32) THEN
- mySize.iHeight = 32
- END IF
- MoveWindow hWnd, winSize.nLeft, winSize.nTop, MySize.iWidth, mySize.iHeight, %TRUE
- ' InvalidateRect hWnd, byval 0, %TRUE
- ELSEIF (ISFALSE(FullScreen)) THEN
- GetClientRect hWnd, clientSize
- moveDirection = GetMovementDirection(clientSize, mouseMovePos, %FALSE)
- hCursor = GetCorrectCursor(moveDirection)
- SetCursor hCursor
- ELSE
- hCursor = LoadCursor(%NULL, BYVAL %IDC_ARROW)
- SetCursor hCursor
- END IF
Advertisement
Add Comment
Please, Sign In to add comment