2016-06-24 14:52 GMT+02:00 Esteban Lorenzano <[email protected]>: > > On 24 Jun 2016, at 14:40, Nicolai Hess <[email protected]> wrote: > > > > 2016-06-24 14:32 GMT+02:00 Esteban Lorenzano <[email protected]>: > >> … and I enhanced the example to not induce to confusion anymore :) >> >> Esteban >> > > Sorry, I must be stupid, it still does not work ( and it actually looks > the same as with the existing WinHandle type). > > > well, that I don’t know… for me it works, I tested it in Win10 and it was > fine. >
What was fine? > What exactly are you trying to do? > As I wrote, I try to get the vmmodule handle (WinProcess getVMModuleHandle) and assign it to the hInstance field of a WinWndClassEx, getting the vm module handle works, (both, if I use the existing WinHandle type or (like you) a direct FFIConstantHandle). But assigning this value to the hInstance field always gives a DNU MessageNotUnderstood: SmallInteger>>isExternalAddress I do understant that a WinHandle is not an external (memory) resource and has no external address. I just don't undestand how to pass this type of arguments. > > Esteban > > > > >> >> On 24 Jun 2016, at 14:27, Nicolai Hess <[email protected]> wrote: >> >> >> >> 2016-06-24 14:05 GMT+02:00 Esteban Lorenzano <[email protected]>: >> >>> >>> On 24 Jun 2016, at 09:53, Nicolai Hess <[email protected]> wrote: >>> >>> >>> >>> I’m sorry… I do not understand. This is solved in UFFI since some >>>> months, and Torsten’s OSWindow uses it. >>>> >>> >>> Sorry then it is my fault. I know that Torsten already ported OSWindow >>> to UFFI, and that most things are already working. >>> >>> UFFI provides FFIConstantHandle type to deal with windows HANDLE types, >>>> as comment says: >>>> >>>> I represent a constant HANDLE, as described in *Windows MSDN> >>>> https://msdn.microsoft.com/en-us/library/windows/desktop/ms724457(v=vs.85).aspx* >>>> >>>> A ==HANDLE== is a special kind of external object who is accessed >>>> through numbers, therefore and ==ExternalAddress== is not appropriate to >>>> describe it (since they are constants and external addresses represents >>>> disposable spaces from memory). >>>> >>>> Is not clear this is necessary outside Windows, but according to >>>> documentation they are somekind analogous to unix's File Descriptors (but >>>> with some remarkable diferences, as documented *here> >>>> http://lackingrhoticity.blogspot.fr/2015/05/passing-fds-handles-between-processes.html* >>>> . >>>> >>>> Example: >>>> [[[ >>>> HWND := #FFIConstantHandle. >>>> self ffiCall: #(HWND GetActiveWindow()) >>>> ]]] >>>> >>> >>>> is there anything I’m missing? >>>> >>> >>> I don't know what else should I do, I already posted the example. >>> The code I provided just don't work (DNU on isExternalAddress, see other >>> mail), and I have no idea how to make it work. >>> Yes, maybe I don't know enough about ffi for this type of the function >>> argument passing. >>> >>> >>> the example is a simplification, you cannot put both definition and call >>> in same method… find attached a working example of what you want. >>> >> >> >> Thank you! >> >> >>> >>> >>> >>> >>> >>> (actually I tried to port some NBOpenGL code to UFFI, for this I need to >>> register a Window Class with WinWndClassEx (to create a gl context). >>> So if this *is* already working, I need to look what I have done wrong). >>> >>> thanks for your response. >>> nicolai >>> >>> >>> >>>> >>>> Esteban >>>> >>> >> > >
