Trusted Solaris 開発ガイド

コード

#include <stdio.h>
 #include <X11/Intrinsic.h>
 #include <X11/StringDefs.h>
 #include <Xm/Xm.h>
 #include <Xm/Label.h>
 #include <Xm/PushB.h>
 #include <Xm/Form.h>
 #include <tsol/Xtsol.h>
 #include <Dt/label_clipping.h>

 XTsolResAttributes								winattrs;
 int								retval, error;
 uid_t								uid;
 Window								window;
 Display								*display;
 char								*string = (char *)0, *string1 = (char *)0, *string2 = (char *)0,
 								*string3 = (char *)0, *string4 = "SECRET";
 XmFontList								fontlist;
 XmString 								xmstr;
 XFontStruct 								*italic;
 Arg 								args[9];
 Dimension								width = 144;
 Widget								stringLabel;
 bslabel_t								senslabel;
 bclabel_t								cmwlabel;

/* コールバック */

 void Xclock(Widget w, caddr_t client_data, caddr_t call_data)
 { system("xclock &"); }

 void Xterm(Widget w, caddr_t client_data, caddr_t call_data)
 { system("xterm &"); }

 void Quit(Widget w, caddr_t client_data, caddr_t call_data)
 {
 	fprintf(stderr, "exiting  . . .¥n");
 	exit(0);
 }
 main(int argc, char **argv)
 {
 	Widget rowcolumn, label, xclock, xterm, quit, form, topLevel;
 	int i = 0;
 	Arg args[9];

/* ウィジェットを作成する */
 	topLevel = XtInitialize(argv[0], "XMCmds1", NULL, 0, &argc, argv);
 	form = XtCreateManagedWidget("form", xmFormWidgetClass, topLevel, NULL, 0);

/* コマンドの引数にラベルウィジェットが使用する ASCII 文字列とフォントリストを持つ */
/* アプリケーションはここで起動する */

 	if (argc == 2) {
/* フォントリストを作成しラベルを変換する */
 			retval = getcmwplabel(&cmwlabel);
 			getcsl(&senslabel, &cmwlabel);
 			italic = XLoadQueryFont(XtDisplay(topLevel),
 														"-adobe-times-medium-i-*-*-14-*-*-*-*-*-iso8859-1");
 			fontlist = XmFontListCreate(italic, "italic");
 			xmstr = (XmString)Xbsltos(XtDisplay(topLevel), &senslabel,
 								width, fontlist, LONG_WORDS);

/* フォントリストとラベルテキストを使用してラベルウィジェットを作成する */
 			i=0;
 			XtSetArg(args[i], XmNfontList, fontlist); i++;
 			XtSetArg(args[i], XmNlabelString, xmstr); i++;
 			label = XtCreateManagedWidget(																"label", xmLabelWidgetClass, form, args, i);
 	}

/* コマンドの引数にラベルウィジェット用の資源ファイル内のテキストを使用しない */
/* アプリケーションはここで起動する */

 	else {
 			label = XtCreateManagedWidget("label", xmLabelWidgetClass, form, NULL, 0); }

/* 引き続きウィジェットを作成する */
 	i=0;
 	XtSetArg(args[i], XmNtopAttachment, XmATTACH_WIDGET);	i++;
 	XtSetArg(args[i], XmNtopWidget, label);									i++;
 	XtSetArg(args[i], XmNleftAttachment, XmATTACH_FORM); i++;
 	XtSetArg(args[i], XmNrightAttachment, XmATTACH_POSITION);	i++;
 	XtSetArg(args[i], XmNrightPosition, 33); i++;
 	XtSetArg(args[i], XmNbottomAttachment, XmATTACH_FORM); 							i++;
 	xclock = XtCreateManagedWidget("xclock", xmPushButtonWidgetClass, form, args, i);

 	i=0;
 	XtSetArg(args[i], XmNtopAttachment, XmATTACH_WIDGET);																													i++;
 	XtSetArg(args[i], XmNtopWidget, label); i++;
 	XtSetArg(args[i], XmNleftAttachment, XmATTACH_POSITION);	i++;
 	XtSetArg(args[i], XmNleftPosition, 33); i++;
 	XtSetArg(args[i], XmNrightAttachment, XmATTACH_POSITION);i++;Ha>