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
>>>>
>>>
>>
>
>

Reply via email to