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

📄 test1.c

📁 安装DDD之前
💻 C
字号:
/* $Header: /cvsroot/lesstif/lesstif/test/Xm/resconvert/test1.c,v 1.3 2002/04/13 12:05:29 amai Exp $ */#include <stdlib.h>#include <string.h>#include <X11/Intrinsic.h>#include <X11/Shell.h>#include <Xm/Label.h>static          XmStringstring_append(s1, s2)	XmString        s1;	XmString        s2;{	XmString        s3;	if (s1 == NULL)		return NULL;	s3 = XmStringConcat(s1, s2);	XmStringFree(s1);	XmStringFree(s2);	return s3;}static          Booleanstring_to_xmstring(display, args, num_args, from_value,		   to_value, converter_data)	Display        *display;	XrmValue       *args;	Cardinal       *num_args;	XrmValue       *from_value;	XrmValue       *to_value;	XtPointer      *converter_data;{	static XmString string;	char           *instring;	char           *p;	XmStringDirection dir = XmSTRING_DIRECTION_L_TO_R;	/* Complain if nothing to convert */	if (from_value->addr == NULL) {		XtDisplayStringConversionWarning(display, from_value->addr,						 XmRXmString);		return False;	}	/*	 * If the caller has allocated storage for the converted value, check	 * that it is big enough	 */	if ((to_value->addr != NULL) && (to_value->size < sizeof(XmString))) {		to_value->size = sizeof(XmString);		return False;	}	/*	 * Take a copy of the from_value, parse it into segments and create	 * the compound string	 */	string = XmStringCreateLtoR("", XmFONTLIST_DEFAULT_TAG);	instring = XtNewString(from_value->addr);	if (instring != NULL) {		for (p = strtok(instring, "#"); p != NULL; p = strtok(NULL, "#")) {			string = string_append(string,					       XmStringCreateLocalized(p));			if (dir == XmSTRING_DIRECTION_L_TO_R)				dir = XmSTRING_DIRECTION_R_TO_L;			else				dir = XmSTRING_DIRECTION_L_TO_R;			string = string_append(string, XmStringDirectionCreate(dir));		}		XtFree(instring);	}	/* Failed to create compound string... */	if (string == NULL) {		XtDisplayStringConversionWarning(display, from_value->addr,						 XmRXmString);		return False;	}	/* Successful conversion, return value to caller */	if (to_value->addr)		*(XmString *) to_value->addr = string;	else		to_value->addr = (XPointer) & string;	to_value->size = sizeof(XmString);	return True;}static voidstring_to_xmstring_destroy(app, to_value, converter_data, args,			   num_args)	XtAppContext    app;	XrmValue       *to_value;	XtPointer       converter_data;	XrmValue       *args;	Cardinal       *num_args;{	XmStringFree(*(XmString *) to_value->addr);}intmain(argc, argv)	int             argc;	char          **argv;{	XtAppContext    app_context;	Display        *display;	Widget          appshell;	Widget          label;	XtToolkitInitialize();	app_context = XtCreateApplicationContext();	/* XtOpenDisplay() builds the resource database */	display = XtOpenDisplay(app_context, NULL, "name", "Class", NULL, 0,				&argc, argv);	/*	 * Create our first VendorShell before registering the type	 * converter, otherwise Motif will overwrite it	 */	appshell = XtAppCreateShell("name", "Class",			     applicationShellWidgetClass, display, NULL, 0);	XtSetTypeConverter(XmRString, XmRXmString, string_to_xmstring,			   NULL, 0, XtCacheNone | XtCacheRefCount,			   string_to_xmstring_destroy);	/* Create a label (with an XmString labelString resource) */	label=XmCreateLabel(appshell, "label", NULL, 0);	XtManageChild(label);	XtRealizeWidget(appshell);	{    static XtWidgetGeometry Expected[] = {   CWWidth | CWHeight            ,   50,   50,   34,   17, 0,0,0, /* label */     };    PrintDetails(appshell,Expected);};	LessTifTestMainLoop(appshell);	exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -