LiveCode Builder is a language for extending LiveCode's capabilities, creating new object types as Widgets, and libraries that access lower-level APIs in OSes, applications, and DLLs.
I was wrapping the Windows API call GetActiveWindow() today and wanted to return the value to LCS. GetActiveWindow() returns a HWND which is a pointer. I couldn't find a way to return the integer value (the windowId property of a stack) by working with a Pointer. I then found IntPtr which works for my purposes. Can someone from headquarters confirm that this is the correct approach?
foreign handler User32GetActiveWindow() returns optional IntPtr binds to "user32>GetActiveWindow"
public handler GetActiveWindow() returns Integer
variable hWnd as optional Integer
unsafe
put User32GetActiveWindow() into hWnd
end unsafe
if hWnd is not nothing then
return hWnd
else
return 0
end if
end handler
@trevordevore: Yes - HWND is better typed as UIntPtr - it isn't really a pointer, but a handle which is checked by the OS in all API calls (so you can't break things by adding 1 to an existing one and passing that back - you'll just get an API error).