Re: better example
- Posted by Dan Moyer <DANIELMOYER at prodigy.net> Jun 15, 2002
- 501 views
Derek, Interesting! I'd never noticed that "iff" hiding in tk_misc.e! --/func iff (atom test, object ifTrue, object ifFalse) --/desc Used to embed an 'if' test inside an expression. --/ret If /i test is /b true then /i ifTrue is returned otherwise /i ifFalse is returned. But you've used it too soon in your code :) See correction below. Or, alternatively, you could leave the "iff" as it is and delete : > setCheck(menu1, not curval) from where it is, and add: setCheck(menu1, not curval) curval = isChecked(menu1) just below the current: curval = isChecked(menu1) Dan Moyer ----- Original Message ----- From: "Derek Parnell" <ddparnell at bigpond.com> To: "EUforum" <EUforum at topica.com> Sent: Saturday, June 15, 2002 9:50 AM Subject: Re: better example > > Thanks Wolf for answering this, however I'd like to suggest that one might > use the stuff that is already built into the library. Here is my example > based on yours... > > -------------------- > include win32lib.ew > > constant SimpleWin = create( Window, "Simple Window", 0, 0, 0, 300, > 100, 0 ), > menu = create(Menu,"File",SimpleWin,0,0,0,0,0), > menu1 = create(MenuItem,"New",menu,0,0,0,0,0), > menu2 = create(MenuItem,"Old",menu,0,0,0,0,0), > menu3 = create(MenuItem,"Check First Item",menu,0,0,0,0,0) > > > procedure w32HClick_menu3(integer self,integer event,sequence params) > integer curval > curval = isChecked(menu1) -- SHOULD BE THIS: setText(SimpleWin, "The first menuitem is " & iff(curval, "NOT checked.","checked.")) -- NOT THIS: --> setText(SimpleWin, "The first menuitem is " & --> iff(curval, "", "NOT") & --> "checked.") > setCheck(menu1, not curval) > > end procedure > setHandler(menu3,w32HClick,routine_id("w32HClick_menu3")) > > WinMain(SimpleWin, Normal) > ------------------ > Derek. > > ----- Original Message ----- > From: "Wolf" <wolfritz at KING.IGS.NET> > To: "EUforum" <EUforum at topica.com> > Sent: Saturday, June 15, 2002 1:00 AM > Subject: Re: better example > > > > > > Hey, Jordah, I answered this on the 8'th already, but here goes again... > > < quoting <snipped> from your example > > > > > constant SimpleWin = create( Window, "Simple Window", 0, 0, 0, 300, > > 100, 0 ), > > menu = create(Menu,"File",SimpleWin,0,0,0,0,0), > > menu1 = create(MenuItem,"New",menu,0,0,0,0,0), > > menu2 = create(MenuItem,"Old",menu,0,0,0,0,0), > > -- added ! > > menu3 = create(MenuItem,"Check First Item",menu,0,0,0,0,0) > > > > -- new stuff ! -- crude, but ... > > constant > > MIIM_STATE = 1, > > zGetMenuItemInfo=registerw32Function(user32,"GetMenuItemInfoA",{C_INT, > > C_INT, C_INT, C_INT}, C_INT) > > > > function isMenuRadioed(atom hMenu,atom uItem,integer fByPosition) > > atom MENUITEMINFO,junk,out > > MENUITEMINFO = acquire_mem(0,48) > > mem_set(MENUITEMINFO,0,48) > > poke4(MENUITEMINFO+0,48) > > poke4(MENUITEMINFO+4,MIIM_STATE) > > junk=w32Func(zGetMenuItemInfo,{hMenu,uItem,fByPosition,MENUITEMINFO}) > > if junk then > > out = and_bits(peek4u(MENUITEMINFO+12),MFS_CHECKED) > > else -- crash_error! > > end if > > release_mem(MENUITEMINFO) > > return out > > end function > > > > procedure w32HClick_menu3(integer self,integer event,sequence params) > > --check item zero/by position > > if isMenuRadioed(getHandle(menu),0,1) then > > setText(SimpleWin," YES") else setText(SimpleWin," NO") > > end if > > end procedure > > setHandler(menu3,w32HClick,routine_id("w32HClick_menu3")) > > > > Now, for a 'philosophical' question, to one and all. > > Since your nice example proves that it's rather easy to add all this > functionality to a win32lib program *without* > > adding it to the win32lib core, do we really need them 'included' ? > > "Win32lib created" programs that actually use "bitmapped" menu's, and > "radio's", will probably be quite rare, in most > > cases. > > Things will be different, of course, when Derek 'breaks' win32lib into > smaller bits, but for now.... ??? > > > > Wolf > > > > > > > > >