Moderators: LCMark, LCfraser
- VIP Livecode Opensource Backer
- Posts: 888
- Joined: Sat Apr 08, 2006 3:06 pm
- Location: Overland Park, Kansas
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?
Code: Select all
foreign handler User32GetActiveWindow() returns optional IntPtr binds to "user32>GetActiveWindow"
public handler GetActiveWindow() returns Integer
variable hWnd as optional Integer
put User32GetActiveWindow() into hWnd
if hWnd is not nothing then
ScreenSteps - http://www.screensteps.com
Levure Application Framework: https://github.com/trevordevore/levure
LiveCode Resources for Developers: http://livecode.bluemangolearning.com
- Livecode Staff Member
- Posts: 996
- Joined: Thu Apr 11, 2013 11:27 am
@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).
- Posts: 190
- Joined: Wed Apr 24, 2013 4:53 pm
It would be nice if there was a chart for all the different types defined in the different LCB modules (Built-in, Java, ObjC, Emscripten JS).