[comp.windows.x] Desperately seeking HP Widget help

adam@hpmtlx.HP.COM ($Adam Kao) (07/14/88)

Hello, here's a widget problem.  I want to have a procedure that attaches
a standard "ok/cancel/help" set of buttons to a parent window.  I need
to pass in the parent window and the procedures to be called on select.
This is the code I have now:

void ok (w, client_data, call_ata)
	Widget w;
	caddr_t client_data;
	caddr_t call_data;
{
	printf ("ok called\n");
}
/* cancel and help are similar procedures */

void add_donebuttons (ok, cancel, help, parent)
	void (*ok)();
	void (*cancel)();
	void (*help)();
	Widget *parent;
{
	static XtCallbackRec callok[] = {
	{ ok, NULL },
	{ NULL, NULL },
	}
/* callcancel and callhelp are the same */

Now, when I try to compile, the compiler complains:

"./donebuttons.c", line 13: incorrect initialization

Dereferencing ok ( *ok, NULL ) gives me the same error.  Changing the
declaration (XtCallbackProc ok;) gives me the same error.

Taking out the parameter declarations:

void add_donebuttons (parent)
	Widget *parent;
{
	static XtCallbackRec callok[] = {
	{ ok, NULL },
	{ NULL, NULL },
	}

and using the global ok/cancel/help makes the compiler happy, and even
gives me bug-free code.

So what's happening here?

Thank you for your time,
Adam