Do we need at the end of the function to add a RETURN, or since it is a function, it automatically return without need to add a return?
If we add a return is wrong or is better, please?
Example:
Code: Select all
F3:: ; press F3 to load screenshot to clipboard
GDI_CaptureScreenToClipboard(0, 0, A_ScreenWidth, A_ScreenHeight)
Return
; Here is the FUNCTION:
GDI_CaptureScreenToClipboard( X, Y, W, H) {
Static SizeOfDIB := A_PtrSize = 8 ? 104 : 84 ; DIBSECTION
Static SizeOfBM := A_PtrSize = 8 ? 32 : 24 ; BITMAP
Static SizeOfBIH := 40 ; BITMAPINFOHEADER
Static OffBits := A_PtrSize = 8 ? 24 : 20 ; BITMAP -> bmBits
Static OffSize := A_PtrSize = 8 ? 52 : 44 ; BITMAPINFOHEADER -> biSizeImage
Local
hDC := DllCall("GetDC", "Ptr", 0, "UPtr")
cDC := DllCall("CreateCompatibleDC", "Ptr", hDC, "UPtr")
hBM := DllCall("CreateCompatibleBitmap", "Ptr", hDC, "Int", W, "Int", H, "UPtr")
hBM := DllCall("CopyImage", "Ptr", hBM, "UInt", 0, "Int", 0, "Int", 0, "UInt", 0x2008, "UPtr")
oBM := DllCall("SelectObject", "Ptr", cDC, "Ptr", hBM, "UPtr")
DllCall("BitBlt", "Ptr", cDC, "Int", 0, "Int", 0, "Int", W, "Int", H
, "Ptr", hDC, "Int", X, "Int", Y, "UInt", 0x40CC0020)
DllCall("SelectObject", "Ptr", cDC, "Ptr", oBM)
DllCall("DeleteDC", "Ptr", tDC)
DllCall("ReleaseDC", "Ptr", 0, "Ptr", hDC)
VarSetCapacity(DIB, SizeOfDIB, 0) ; DIBSECTION
DllCall("GetObject", "Ptr", hBM, "Int", SizeOfDIB, "Ptr", &DIB)
Size := NumGet(DIB, OffSize, "UInt")
Bits := NumGet(DIB, OffBits, "UPtr")
hDIB := DllCall("GlobalAlloc", "UInt", 2, "UInt", SizeOfBIH + Size, "UPtr")
pDIB := DllCall("GlobalLock", "Ptr", hDIB, "UPtr")
DllCall("RtlMoveMemory", "Ptr", pDIB, "Ptr", &DIB + SizeOfBM, "UInt", SizeOfBIH)
DllCall("RtlMoveMemory", "Ptr", pDIB + SizeOfBIH, "Ptr", Bits, "UInt", Size)
DllCall("GlobalUnlock", "Ptr", hDIB)
DllCall("DeleteObject", "Ptr", hBM)
DllCall("OpenClipboard", "Ptr", 0)
DllCall("EmptyClipboard")
DllCall("SetClipboardData", "UInt", 8, "Ptr", hDIB)
DllCall("CloseClipboard")
}
So, the correct is what?
(a) To add a RETURN at the end of the function like following:?
Code: Select all
DllCall("CloseClipboard")
RETURN
}
(b) To add a RETURN at the end of the function like following:?
Code: Select all
DllCall("CloseClipboard")
}
RETURN
(c) To NOT add a RETURN at the end of the function like following:?
Code: Select all
DllCall("CloseClipboard")
}