Thanks a lot Torsten! I'll invest the whole morning tomorrow in trying to get a little bit more of this to work.
If I don't succeed... there are lots of very good restaurants in Barcelona, Igor ;) 2013/11/13 Torsten Bergmann <asta...@gmx.de> > Hi Bernat, > > >how do I translate this into NB code > > Either invite Igor (author of NB) for lunch or try this: > > > Its a C-structure, you convert it by wrapping this in a sublcass > of "NBExternalStructure". See the examples already in a Pharo 3.0 image. > > Basically you need: > > - define a subclass NBExternalStructure subclass: #WinNotifyIconData ... > - define the correct fields in a class side #fieldsDesc method according > to the native data types used in the structure > - call "WinNotifyIconData rebuildFieldAccessors" > - setup the types in a shared pool that you can include later: > > - define the pool: SharedPool subclass: #WinTryIconConstants ... > - in a class initialize method you can setup the type > > initialize > > NOTIFYICONDATA := #WinNotifyIconData. > PNOTIFYICONDATA:= 'NOTIFYICONDATA *'. > > - by including the pool you can use "NOTIFYICONDATA" or "PNOTIFYICONDATA" > in any native boost call. > > > If you are in Pharo 3.0 load "OS-Windows" package from the config browser. > Check the subclasses of NBExternalStructure there. > > I wrapped many other windows structures already so you can get an idea > about > it. For instance have a look at WinConsoleConstants>>initTypeConstants, > there you will find > the CONSOLE_CURSOR_INFO, CONSOLE_SCREEN_BUFFER_INFO structs wrapped in > WinConsoleCursor, WinConsoleScreenBuffer classes. > > Compare them with the MSDN struct description. > > >Could the Windows API be any more convoluted and dev-unfriendly in any > >possible sense? > > This question should go to M$ not Pharo-user ;) > > Bye > T. > > > BTW: I'm not sure "PNOTIFYICONDATA" alone will solve your problem if I > remember correctly > from my Smalltalk/MT and C/C++ times also playing with tray icons. > I guess you need a callback that gets called when the icon is clicked > or the tray icon menu > is choosen (see uCallbackMessage member in the struct). > You also need a handle to an icon - either the icon from the EXEs > resource section or > by loading one from a bitmap. That means wrapping the icon or bitmap > apis too... > > -- Bernat Romagosa.