jbrouill@teknowledge-vaxc.ARPA (Luc Brouillet) (09/03/88)
In article <21146@tut.cis.ohio-state.edu> cml@diplodocus.cis.ohio-state.edu (Christopher Lott) writes: >can anyone please help me with the syntax for calling a popup from >a script? I have the PopUpXcmd in my stack, but all attempts at calling >it just return a '0' (zero). I use the PopUp XCMD defined in Gary Bond's "XCMD's for Hypercard". I was also experiencing the same problem. The error was using the mouseUp message. The PopUpMenuSelect() routine expect the mouse to be down when called. Here is my working code: Script for the lock field that contains the selection: on mouseDown popChoice("item1,(-,item2,item 3,item 4,item 5,item 6,item 7,item 8") end mouseDown Script for the stack: on popChoice l repeat with n = 1 to the number of items of l put item n of l & ";" after m end repeat put rect of the target into r put PopMenu(item 2 of r, item 1 of r, m) into v put item v of l into the target end popChoice There seems to be a typo at the bottom of p. 261 of Bond's book. It should read: selection = (long) PopUpMenuSelect (myMenuHandle, (offsetTop + cardWindowLoc.v), (offsetLeft + cardWindowLoc.h), 1); Finally, I found the following handy for writing Bond's XCMDs in LSC 3.0: pascal void main (XCmdBlockPtr); void doXCmd (XCmdBlockPtr); pascal void main (paramPtr) XCmdBlockPtr paramPtr; { asm { MOVE.L A4,-(SP) ; save the old A4 MOVE.L A0,A4 ;load the address of the code segment ; in memory } doXCmd (paramPtr); asm { MOVEA.L (SP)+,A4 ; restore A4 } } void doXCmd (paramPtr) XCmdBlockPtr paramPtr; { /* what would normally be in the main() routine. } Have fun! Jean-Luc internet: jbrouill@teknowledge-vaxc.arpa usenet: {hplabs|sun|ucbvax|decwrl|sri-unix}!jbrouill%teknowledge-vaxc.arpa USMail: Teknowledge Inc, 1850 Embarcadero Rd, POB 10119, Palo Alto, CA 94303