F
Problem ist dass im Dialog kein Wert als "ValueString" hinterlegt ist. Das auch in dem motif xdialg beispiel das auch crash könnte daran liegen, dass das beispiel veraltet ist. Denn laut dem code soll da der user was eingeben können nur ist da nichts sichtbar weil kein Wert gesetzt wird (nicht mal emtpy string)
siehe auch folgendes beispiel:
https://openbook.rheinwerk-verlag.de/linux_unix_programmierung/Kap14-015.htm#RxxKap14015040004C31F020100
Korrekt ist es wie folgt
x11test.c:
#include <X11/StringDefs.h>
#include <X11/Intrinsic.h>
#include <X11/Xaw/Box.h>
#include <X11/Xaw/Dialog.h>
#include <X11/Xaw/Command.h>
#include <stdio.h>
void clickDialog(Widget w, XtPointer client, XtPointer call) {
printf("Hello World %p\n", w);
String pc = XawDialogGetValueString(XtParent(w));
printf("tt: %s\n", pc);
}
int main(int argc, char **argv) {
Widget toplevel, box, dialog;
toplevel = XtInitialize("Mein Fenster", "simple", NULL, 0, &argc, argv);
box = XtCreateManagedWidget("Button Gruppe", boxWidgetClass, toplevel, NULL, 0);
dialog = XtVaCreateManagedWidget("doalog", dialogWidgetClass, box, XtNlabel,"speichern ?", XtNvalue, (XtArgVal) "bla",NULL);
XawDialogAddButton(dialog,"Yes", clickDialog, NULL);
XawDialogAddButton(dialog,"No", clickDialog, NULL);
XtRealizeWidget(toplevel);
XtMainLoop();
}
Durch XtNValue, (XtArgVal) "bla" wird dann im Dialog ein eingabefeld angezeigt und der wert, der in diesem feld steht kann dann via XawDialogGetValueString ausgelesen werden
Und dann wie folgt übersetzen:
gcc x11test.c -o x11test.c -lXt -lXaw
Ausgabe nach click auf einen der Buttons:
$ ./x11test
Hello World 0x556b1496e040
tt: bla