[comp.sys.mac.programmer] Notification Man

Chris McNeil (04/17/91)

I'm trying to set a global variable (alertnum) from a response procedure in a
notification routine. Following is the think C code. Could someone please tell
me what I'm doing wrong ( I think I'm not setting up and using A5 properly but
I'm not sure)


Thanks 
Chris McNeil
----------------------------------------------------------------------
#define nil 0L
struct NMRec	myNote[10];		/* declare your NMRec */
OSErr		err;		/* declare for err handling */
EventRecord myEvent;
int alertnum;
main()
{
void notify();
alertnum=0;
for(;;){
if (alertnum < 10) {
alertnum++;
notify("\pthis is a notification");

}
}

}


void notify(string)
char *string;

{

	pascal void MyResponse();
	
	EventRecord myEvent;
	
	/*Handle		ManDoneS;	declare a handle for the sound */
	

	myNote[alertnum].qType = nmType;	/* queue type -- nmType = 8 */
	myNote[alertnum].nmMark = 1;		/* get mark in Apple menu */
	myNote[alertnum].nmSIcon = nil;		/* no flashing Icon */

	myNote[alertnum].nmSound =(Handle)-1L;;	/* set the sound to be played*/
	myNote[alertnum].nmStr = (StringPtr)string;		/* alert box */
	myNote[alertnum].nmResp = (ProcPtr)MyResponse;		/* response procedure */
	myNote[alertnum].nmRefCon =(long)CurrentA5;	/* I need my A5*/


	err = NMInstall ((QElemPtr) &myNote[alertnum]);
	
	

}

pascal void MyResponse (NMRec myNote[10])
{
SetUpA5();
CurrentA5=(Ptr)myNote[alertnum].nmRefCon;
err = NMRemove ((QElemPtr) &myNote[alertnum]);
alertnum--;
RestoreA5();
}