Re: A89: Re: Re: Showing Var-Link dialog
[Prev][Next][Index][Thread]
Re: A89: Re: Re: Showing Var-Link dialog
Compile it with nostub... then you should be able to copy the hex
straight out of the 89z file
James Darpinian wrote:
>
> Hello!
>
> Thanks for the info. Now my program works perfectly. Now I'm wondering
> if it would be possible to convert this program to an Exec string for easy
> use in a TI-BASIC program. Are there any utilities for this?
>
> James Darpinian
>
> ----- Original Message -----
> From: Zeljko Juric <zjuric@utic.net.ba>
> To: <assembly-89@lists.ticalc.org>
> Sent: Thursday, July 13, 2000 3:16 AM
> Subject: A89: Re: Showing Var-Link dialog
>
> >
> > Hi!
> >
> > > I am trying to make a program that shows the Var-Link dialog,
> > > allows the user to select a variable, then returns the name
> > > of the chosen variable. I intend to use this program inside
> > > of a TI-BASIC program (it would be very useful to be able to
> > > do this in BASIC, TI was stupid not to put it in). I'm not
> > > quite sure how this can be done, however.
> >
> > Here is a demo (read below about what is wrong in your code):
> >
> > #include <nostub.h>
> > #include <all.h>
> >
> > int _ti89;
> >
> > char VarBuffer[20]="";
> >
> > void VarLinkHandler(EVENT *ev)
> > {
> > if(ev->Type=CM_HSTRING)
> > strcpy(VarBuffer,HeapDeref(ev->extra.hPasteText));
> > EV_defaultHandler(ev);
> > }
> >
> > void OpenVarLink(void)
> > {
> > EVENT ev;
> > EVENT_HANDLER OldHandler=EV_captureEvents(VarLinkHandler);
> > ev.Type=CM_KEYPRESS;
> > ev.extra.Key.Code=4141; // code of VAR-LNK keypress
> > EV_defaultHandler(&ev);
> > EV_captureEvents(OldHandler);
> > }
> >
> > void _main(void)
> > {
> > clrscr();
> > OpenVarLink();
> > printf_xy(0,50,"You picked: %s",VarBuffer);
> > ngetchx();
> > }
> >
> > > I have tried doing it this way:
> > > OldHandler = EV_captureEvents(Handler);
> > > /* Handler is my event handler that is meant to capture
> > > CM_KEYPRESS events and save them to a string*/
> > > OldHandler(&event);
> > > /* event is a CM_KEYPRESS event set to 4141, the code of
> > > the Var-Link key*/
> > >
> > > Is this correct?
> >
> > No. You need to call EV_defaultHandler instead of OldHandler,
> > because OldHandler is in fact NULL when there is no any user
> > handlers installed. From the other side, EV_defaultHandler
> > calls the TIOS handler which is used for default dispatching
> > of some common events (see the doc about this function). It
> > works independently of which handler is currently installed and
> > whether it is installed at all.
> >
> > > My program generates an address error when I run it, before
> > > the Var-Link dialog is displayed.
> >
> > Now you know why.
> >
> > > Is it illegal to call an event handler when it is not actually
> > > installed?
> >
> > Yes. That's reason of introducing EV_defaultHandler.
> >
> > > I have attatched the complete source code to my program if you
> > > want to look at it (it's not very well organized, though).
> >
> > There is yet another problem in your code, in your event handler.
> > When VAR-LNK applet sends the variable name to the main application,
> > it uses CM_HSTRING event instead of series of CM_KEYPRESS events
> > (by the way, CATALOG applet uses CM_STRING instead). See from my
> > code how you can handle this event.
> >
> > > Thanks for any help you can provide!
> >
> > I really hope that this helps.
> >
> > Zeljko Juric
> >
--
Scott "Wrath" Dial
wrath@calc.org
ICQ#3608935
Member of TCPA - tcpa.calc.org
PGP key available
_____NetZero Free Internet Access and Email______
http://www.netzero.net/download/index.html
Follow-Ups:
References: