seiler@chrpserv.gsfc.nasa.gov (Ed Seiler) (01/25/90)
I have a very simple example of an xcmd that I can't seem to get to work.
If I invoke the xcmd from the message box of the stack it is installed in,
and then "put the result", I get nothing. What am I doing wrong? I am using
Think C 3.01. It seems the basic mechanics of being able to return a string
work okay for another example if I call GetString(-16096) to get my Chooser
name, and then call PasToZero to convert it to a null-terminated string.
But trying to return a literal string as in the following example fails:
#include <MacTypes.h>
#include "HyperXCmd.h"
Handle CopyStrToHand(char *);
pascal void main(paramPtr)
XCmdBlockPtr paramPtr;
{
paramPtr->returnValue = (Handle) CopyStrToHand("This is a test string");
}
Handle CopyStrToHand(str)
char *str;
{
Handle newHndl;
newHndl = (Handle) NewHandle((long) strlen(str) + 1);
strcpy((char *) (*newHndl), str);
return(newHndl);
}
This seems ridiculously simple, but I can't figure it out.
Ed Seiler seiler@chrpserv.gsfc.nasa.gov