Hi, After i intialize the GUI with " XtAppMainLoop" I want to change the label. The application is very simple it involves displaying some numbers on a text field. The numbers update at about 10-Hz. I see that all the callbacks (that i have seen) are triggered via. some user controlled event. If you can send me a sample code to do this that would be great. |
|||

Anonymous
Try this...
You should be able to use XtVaSetValues and set the XmNlabelString property to the text that you want.
Example:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Widget o_Label;
XmString s_String;
s_String = XmStringCreateLocalized("MyLabel");
XtVaSetValues(o_Label, XmNlabelString, s_String, NULL);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NOTE: XmStringCreateLocalized accepts a char as input and creates a XmString item that can then be used to modify the text of the label. When working with text Motif uses XmString's as input a lot (Combobox, Lists, Labels, Buttons); however, for some reason with textboxes they don't
Hope this help.
C. Lamb
Anonymous
A sample
Hello, here is a sample you requested.
<br /> #include <Xm/Xm.h><br /> #include <Xm/Label.h><br /> #include <Xm/LabelG.h><br /> #include <time.h><br /> #include <sys/time.h></p> <p>char time_string_buf[13];</p> <p>char *<br /> get_time_string()<br /> {<br /> struct timeval tv;<br /> struct tm *tm;<br /> gettimeofday(&tv, NULL);<br /> tm = localtime(&(tv.tv_sec));<br /> snprintf(time_string_buf, sizeof(time_string_buf),<br /> "%02d:%02d:%02d.%03ld",<br /> tm->tm_hour, tm->tm_min, tm->tm_sec, tv.tv_usec);<br /> return time_string_buf;<br /> }</p> <p>void<br /> show_time(XtPointer closure, XtIntervalId *id)<br /> {<br /> Widget label = (Widget)closure;<br /> XmString s = XmStringCreateLocalized(get_time_string());<br /> XtVaSetValues(label, XmNlabelString, s, NULL);<br /> XmStringFree(s);<br /> XtAppAddTimeOut(XtWidgetToApplicationContext(label),<br /> 100, show_time, (XtPointer)label);<br /> }</p> <p>int<br /> main (int argc, char** argv)<br /> {<br /> Widget toplevel, label;<br /> XtAppContext app;<br /> XmString s;</p> <p> XtSetLanguageProc(NULL, NULL, NULL);<br /> toplevel = XtVaOpenApplication(&app, "Demos", NULL, 0,<br /> &argc, argv,<br /> NULL, sessionShellWidgetClass, NULL);</p> <p> s = XmStringCreateLocalized(get_time_string());</p> <p> label = XtVaCreateManagedWidget("time_label",<br /> xmLabelWidgetClass, toplevel,<br /> XmNlabelString, s,<br /> NULL);</p> <p> XtAppAddTimeOut(XtWidgetToApplicationContext(label),<br /> 100, show_time, (XtPointer)label);</p> <p> XmStringFree(s);</p> <p> XtRealizeWidget(toplevel);<br /> XtAppMainLoop(app);</p> <p> return 0;<br /> }<br />