📄 test3.c
字号:
/* $Id: test3.c,v 1.3 2000/08/29 21:59:20 dannybackx Exp $ */#include <stdio.h>#include <stdlib.h>#include <X11/IntrinsicP.h>#include <Xm/Form.h>#include <Xm/Label.h>#include <Xm/Frame.h>#include <Xm/MainW.h>#include <Xm/PushB.h>#include <Xm/CascadeB.h>#include <Xm/RowColumn.h>static char *FallBack[] ={ "*MotifDragWindowId.alignment: XmALIGNMENT_BEGINNING", NULL};Window MotifDragWindowId = None;static WidgetCreateMenuBar(Widget parent){Widget MenuBar;Widget Cascade;Widget Button;Widget Menu; MenuBar = XmCreateMenuBar(parent, "MenuBar", NULL, 0); Menu = XmCreatePulldownMenu(MenuBar, "FilePullDownMenu", NULL, 0); Button = XmCreatePushButton(Menu, "Quit", NULL, 0); XtAddCallback(Button, XmNactivateCallback, (XtCallbackProc)exit, NULL); XtManageChild(Button); Cascade = XmCreateCascadeButton(MenuBar, "File", NULL, 0); XtVaSetValues(Cascade, XmNsubMenuId, Menu, NULL); XtManageChild(Cascade); return(MenuBar);}static voidReadMotifDragWindowId(Widget label){Atom DragWindowAtom;Atom actual_type;int actual_format;unsigned long nitems;unsigned long bytes_after;unsigned char *prop = NULL;char buf[1024];XmString string;/* printf("ReadMotifDragWindowId()\n"); */ DragWindowAtom = XmInternAtom(XtDisplay(label), "_MOTIF_DRAG_WINDOW", False); if (XGetWindowProperty(XtDisplay(label), DefaultRootWindow(XtDisplay(label)), DragWindowAtom, 0L, 100000L, False, XA_WINDOW, &actual_type, &actual_format, &nitems, &bytes_after, &prop) == Success) { if (actual_format == 32 && nitems == 1) { MotifDragWindowId = *((Window *)prop); } XFree(prop); } sprintf(buf, "_MOTIF_DRAG_WINDOW - "); if (MotifDragWindowId == None) { sprintf(&buf[strlen(buf)], "None"); } else { sprintf(&buf[strlen(buf)], "%p", MotifDragWindowId); /* set event handler for this window */ } string = XmStringCreateSimple(buf); XtVaSetValues(label, XmNlabelString, string, NULL); XmStringFree(string);}static voidReadDragTargets(Widget label){Atom MotifDragTargets;Atom actual_type;int actual_format;unsigned long nitems;unsigned long bytes_after;unsigned char *prop = NULL;char buf[1024];XmString string;int num_target_lists;/* printf("ReadDragTargets(%s)\n", XtName(label)); */ MotifDragTargets = XmInternAtom(XtDisplay(label), "_MOTIF_DRAG_TARGETS", False); if (XGetWindowProperty(XtDisplay(label), MotifDragWindowId, MotifDragTargets, 0L, 100000L, False, MotifDragTargets, &actual_type, &actual_format, &nitems, &bytes_after, &prop) == Success) { if (nitems >= 8) { sprintf(buf, "Byte Order %s", prop[0] == 'B' ? "MSB first" : (prop[0] == 'l' ? "LSB first" : "Unknown")); string = XmStringCreateSimple(buf); XtVaSetValues(XtNameToWidget(label, "*ByteOrder"), XmNlabelString, string, NULL); XmStringFree(string); sprintf(buf, "Protocol version %i", prop[1]); string = XmStringCreateSimple(buf); XtVaSetValues(XtNameToWidget(label, "*Version"), XmNlabelString, string, NULL); XmStringFree(string); switch (prop[0]) { case 'B': num_target_lists = prop[2] * 256 + prop[3]; break; case 'l': num_target_lists = prop[3] * 256 + prop[2]; break; default: num_target_lists = 0; break; } sprintf(buf, "%i target lists", num_target_lists); string = XmStringCreateSimple(buf); XtVaSetValues(XtNameToWidget(label, "*NumTargetLists"), XmNlabelString, string, NULL); XmStringFree(string); } else { printf("ReadDragAtoms() - %i\n", nitems); } XFree(prop); } else { printf("ReadDragAtoms() - failed\n"); }}static voidReadDragAtoms(Widget label){Atom MotifDragAtoms;Atom actual_type;int actual_format;unsigned long nitems;unsigned long bytes_after;unsigned char *prop = NULL;char buf[1024];XmString string;int num_atoms;typedef struct { Atom atom; Time time;} AtomTime_t;struct { unsigned char format; unsigned char version; unsigned char num[2]; AtomTime_t *AtomTime;} DragAtomTable;/* printf("ReadDragAtoms(%s)\n", XtName(label)); */ MotifDragAtoms = XmInternAtom(XtDisplay(label), "_MOTIF_DRAG_ATOMS", False); if (XGetWindowProperty(XtDisplay(label), MotifDragWindowId, MotifDragAtoms, 0L, 100000L, False, MotifDragAtoms, &actual_type, &actual_format, &nitems, &bytes_after, &prop) == Success) { if (nitems >= 8) { sprintf(buf, "Byte Order %s", prop[0] == 'B' ? "MSB first" : (prop[0] == 'l' ? "LSB first" : "Unknown")); string = XmStringCreateSimple(buf); XtVaSetValues(XtNameToWidget(label, "*ByteOrder"), XmNlabelString, string, NULL); XmStringFree(string); sprintf(buf, "Protocol version %i", prop[1]); string = XmStringCreateSimple(buf); XtVaSetValues(XtNameToWidget(label, "*Version"), XmNlabelString, string, NULL); XmStringFree(string); switch (prop[0]) { case 'B': num_atoms = prop[2] * 256 + prop[3]; break; case 'l': num_atoms = prop[3] * 256 + prop[2]; break; default: num_atoms = 0; break; } sprintf(buf, "%i atoms", num_atoms); string = XmStringCreateSimple(buf); XtVaSetValues(XtNameToWidget(label, "*NumAtoms"), XmNlabelString, string, NULL); XmStringFree(string); } else { printf("ReadDragAtoms() - %i\n", nitems); } XFree(prop); } else { printf("ReadDragAtoms() - failed\n"); }}static voidReadDragAtomPairs(Widget label){Atom MotifDragAtomPairs;Atom actual_type;int actual_format;unsigned long nitems;unsigned long bytes_after;unsigned char *prop = NULL;char buf[1024];XmString string;/* printf("ReadDragAtomPairss(%s)\n", XtName(label)); */ MotifDragAtomPairs = XmInternAtom(XtDisplay(label), "_MOTIF_DRAG_ATOM_PAIRS", False); if (XGetWindowProperty(XtDisplay(label), MotifDragWindowId, MotifDragAtomPairs, 0L, 100000L, False, MotifDragAtomPairs, &actual_type, &actual_format, &nitems, &bytes_after, &prop) == Success) { if (nitems >= 8) { sprintf(buf, "Byte Order %s", prop[0] == 'B' ? "MSB first" : (prop[0] == 'l' ? "LSB first" : "Unknown")); string = XmStringCreateSimple(buf); XtVaSetValues(XtNameToWidget(label, "*ByteOrder"), XmNlabelString, string, NULL); XmStringFree(string); sprintf(buf, "Protocol version %i", prop[1]); string = XmStringCreateSimple(buf); XtVaSetValues(XtNameToWidget(label, "*Version"), XmNlabelString, string, NULL); XmStringFree(string); } else { printf("ReadDragAtoms() - %i\n", nitems); } XFree(prop); } else { printf("ReadDragAtoms() - failed\n"); }}static voidReadMotifDragWindowProperties(Widget label){/* printf("ReadMotifDragWindowProperties()\n"); */ ReadDragTargets(XtNameToWidget(label, "*DragTargetsFrame")); ReadDragAtoms(XtNameToWidget(label, "*DragAtomsFrame")); ReadDragAtomPairs(XtNameToWidget(label, "*DragAtomPairsFrame")); /* _MOTIF_DRAG_TARGETS _MOTIF_DRAG_ATOMS _MOTIF_DRAG_ATOM_PAIRS */}static voidRootWindowPropertyNotifyHandler(Widget w, Widget label, XEvent *event){Atom DragWindowAtom; printf("RootWindowPropertyNotifyHandler()\n"); DragWindowAtom = XmInternAtom(XtDisplay(label), "_MOTIF_DRAG_WINDOW", False); if (event->xproperty.atom == DragWindowAtom) { printf("RoowWindowPropertyNotifyHandler() - %s\n",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -