Hi Nicolai, > On 25 Apr 2016, at 09:14, Nicolai Hess <[email protected]> wrote: > > > > 2016-04-24 15:26 GMT+02:00 Torsten Bergmann <[email protected] > <mailto:[email protected]>>: > Hi Nicolai, > > missed this thread - sorry. To my knowledge there was a call in NB for > CreateWindow > but there was no example in opening a new window. For X-Windows there was an > example > if I remember correctly. > > Hi Torsten, > > yes there is an "example" in NBOpenGL. On Windows, it registers and creates > window for getting an opengl context. > The code and classes for registering and creating a window are similiar to > what is now in your os-windows. > I needed to define some more pool variables for some style attributes, all > that is working. > What did not work is storing the hInstance attribute in the WndClass struct.
what and how it does not work? can you paste the code? cheers! Esteban > With NBOpenGL (and non-spur resp. NativeBoost) this works. > With the new UnifiedFFI this gives an error from: > > pointerAt: byteOffset put: value > "Store a pointer object at the given byte address" > value isExternalAddress > > > > Basically I would like to add support for this into OS-Windows, yes. > Some parts are there and UFFI now has easy callbacks. Havent looked > at OSWindow yet - but I guess the goal is to create native windows as well. > Also I would like to add more support in manipulating/quering other > external windows (which can be done using the already built in support > for process and window handles). > > In Win32 to create a window one has to register a window class first and > use the window class name afterwards in the CreateWindow API function. > > No time to look into this this week ... but can give a try afterwards. > The WNDCLASS/WNDCLASSEX structure needs to be wrapped, RegisterClass > called and CreateWindowEx with a callback for a function to process > window messages. > > Dont know how if this interferes with the VM's own processing loop ... > but we should give a try. If you catch me on Slack next week we can > try together. > > Bye > Torsten > > > Gesendet: Sonntag, 24. April 2016 um 12:17 Uhr > Von: "Nicolai Hess" <[email protected] <mailto:[email protected]>> > An: "Pharo Development List" <[email protected] > <mailto:[email protected]>> > Betreff: Re: [Pharo-dev] OS-Windows and UnifiedFFI > > > > 2016-04-15 21:58 GMT+02:00 Nicolai Hess <[email protected] > <mailto:[email protected]>>: > > Hi Torsten, Esteban, > I try to use OS-Windows (not OSWindow :) ) with latest spur VM and > UnifiedFFI.As far as I can see, you (Torsten) already ported some parts to > UnifiedFFI - great, thanks! > I now try to open a new window withWinWindow>>createWindowEx ....as I took > this example originally from NBOpenGL, it seems I have to define > a Window Class first, with > WinWndClassEx > This seems to work in the old NBOpenGL/NBWin32 code but not with OS-Windows > WinWndClassEx > first, NBOpenGL uses > NativeBoostWin32 getVMModuleHandle for an HModule instance > there is a similar call in OS-Windows, WinProcess getVMModuleHandle > (I needed to define a missing type, HMODULE, but that works). > > What does not work is this part: > > | hInst wndClass | > hInst := WinProcess getVMModuleHandle. > wndClass := WinWndClassEx new. > wndClass hInstance: hInst. > > FF complains about > pointerAt: byteOffset put: value > "Store a pointer object at the given byte address" > value isExternalAddress > > here value is not a handle, but a small integer, and it does not define > isExternalAddress > > I tried to put the handle instead of the handles value, but this does not > work either. > > Any Idea what is missing here, I need a way to store the HMODULE handle > in the structure of the WinWNdClassEx > > Thanks in advance. > > Anyone? > >
