#include #include #include #include #include #include #include "MsgPop.h" #include "xlocale.h" Atom wm_protocols[2]; void QuitMsg(Widget w, XEvent *e, String *p, Cardinal *n) { if (e->xclient.data.l[0] == wm_protocols[0] || e->xclient.data.l[0] == wm_protocols[1]) { exit(1); /* XtDestroyWidget(w); */ } } /* command-line options */ static XrmOptionDescRec options[] = {}; /* actions */ static XtActionsRec actions[] = { {"quitmsg", QuitMsg}, }; String trans_top = "WM_PROTOCOLS: quitmsg()\n"; int main(int argc, char **argv) { const char *usage = "usage: %s filename\n"; XtAppContext app; Widget top; mysetlocale(0); /* for my locale lib */ top = XtVaOpenApplication(&app, "AnimTest", options, XtNumber(options), &argc, argv, NULL, msgPopWidgetClass, NULL); XtAppAddActions(app, actions, XtNumber(actions)); XtOverrideTranslations(top, XtParseTranslationTable(trans_top)); XtVaSetValues(top, XtNwidth,(Dimension)600, XtNheight,(Dimension)500, XtNstring, "This is test\x1b$Bるんるららるららららら〜るるるるるるん\x1b(B", NULL); XtSetMappedWhenManaged(top, False); XtRealizeWidget(top); wm_protocols[0] = XInternAtom(XtDisplay(top), "WM_DELETE_WINDOW", False); wm_protocols[1] = XInternAtom(XtDisplay(top), "WM_SAVEYOURSELF", False); XSetWMProtocols(XtDisplay(top), XtWindow(top), wm_protocols, 2); XtMapWidget(top); XtAppMainLoop(app); exit(0); }