⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test3.c

📁 安装DDD之前
💻 C
📖 第 1 页 / 共 2 页
字号:
/* $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 + -