| I'm not aware of any changes that have been made in V5.3 to correct
this situation, but some of the VAX bindings were slightly screwy, so
falling back on the C bindings was the way to go. Submitted for your
amusement are the following workarounds:
> XtAppCreateShell
[HIDDEN] FUNCTION XtAppCreateShell(%IMMED shell_name : char_ptr;
%IMMED class_name : char_ptr;
%IMMED class : UNSIGNED;
%IMMED display : UNSIGNED;
%IMMED argv : UNSIGNED;
%IMMED argc : INTEGER) : DWT$WIDGET;
EXTERNAL;
Where 'char_ptr' is ^CHAR and is a zero terminated C string.
So you must construct the zero terminated strings yourself. I
built some utility routines for doing that from PASCAL, so if you
want them, I can send them to you through the mail.
> XtOpenDisplay
This one has different problems. You can use the VAX binding, but you
have to play other games. To specify zero for the 6th and 7th
arguments, you have to pass a variable containing a zero, not just a
zero constant. I didn't use the urlist or arglist parameters...
My 'nodename' variable was a VARYING OF CHAR. The parentheses allow
the compiler to construct a temporary copy of the string which can be
passed correcty to the VAX binding.
none := 0;
display := XT$OPEN_DISPLAY(application_context,
(nodename), 'application', 'class',
%REF garbage, none, none, %REF garbage);
> XSynchronize
Back to the C bindings for this one.
[HIDDEN] XSynchronize(%IMMED display : UNSIGNED;
%IMMED flags : UNSIGNED) : UNSIGNED;
EXTERNAL;
Hope this helps.
John
|