○ウィジット



■Athenaウィジットを使用したプログラムのコンパイルを行うコマンド

gcc -o test test.c -I/usr/X11R6/include -lXaw -lXt -lX11 -L/usr/X11R6/lib




下のプログラムをコンパイルすると実行できます

■背景色を変えたい時は、実行する時の引数で必要なリソースを操作します

▼灰色の背景で実行
./test -xrm '*form.background: gray'


#include <X11/StringDefs.h>
#include <X11/Intrinsic.h>
#include <X11/Xaw/Form.h>
#include <X11/Xaw/Label.h>
#include <X11/Xaw/Command.h>
#include <X11/Xaw/AsciiText.h>

//Textウィジットから文字列を取得
void getStr(Widget w,char*str){
	char*st;
	Arg args[1];
	XtSetArg(args[0],XtNstring,(XtArgVal)&st);
	XtGetValues(w,args,1);
	strcpy(str,st);
}

//Textウィジットに文字を入れる
void setStr(Widget w,char*str){
	Arg args[1];
	XtSetArg(args[0],XtNstring,(XtArgVal)str);
	XtSetValues(w,args,1);
}

//ボタンが押された時の動作
void Button1Callback( Widget w, XtPointer client, XtPointer called )
{
	exit(0);
}

//テキストが入力された時の動作、入力されているテキストを表示
void Edit1Callback( Widget w, XtPointer cld, XtPointer cad ){
	char str[128]="";
	getStr(w,str);
	printf("%s\n",str);
}

main( int argc, char **argv )
{
	XtAppContext app_context;
	Widget top, form;

	top = XtVaAppInitialize( &app_context, "test", NULL, 0, &argc, argv, NULL,
	//XtNwidth,500,
	//XtNheight,500,
	NULL);


	form = XtVaCreateManagedWidget("form",formWidgetClass,top,NULL);

	//ラベルの作成
	Widget label1 = XtVaCreateManagedWidget("label1",//ウィジット名
					labelWidgetClass,//ラベルクラスを指定
					form,
					//リソースの直接入力(どんどん追加できる)
					XtNlabel,"Label1 test",//表示される文字
					XtNhorizDistance,5,//開始位置
					XtNvertDistance,5,
					XtNwidth,100,//幅と高さ
					XtNheight,20,
					XtNborderWidth,1,//境界線
					//リソースここまで
					NULL);

	//テキストの作成
	Widget edit1 = XtVaCreateManagedWidget("edit1",//ウィジット名
					asciiTextWidgetClass,//クラスを指定
					form,
					//リソースの直接入力(どんどん追加できる)

					XtNeditType,XawtextEdit,//読み書き可能
					//XtNeditType,XawtextRead,//リードオンリー
					//XtNeditType,XawtextAppend,//追加のみ
					XtNecho,True,//入力文字を表示

					//XtNstring,"test",//初期値
					//XtNdisplayCaret,False,//カレットを表示しない
					//XtNscrollHorizontal,XawtextScrollAlways,//横方向のスクロールバーを表示
					//XtNscrollVertical,XawtextScrollAlways,//縦方向のスクロールバーを表示
					//XtNwrap,XawtextWrapWord,//自動折り返し もしくは XawtextWrapLine 

					XtNhorizDistance,25,//開始位置
					XtNvertDistance,30,
					XtNwidth,100,//幅と高さ
					//XtNheight,200,
					XtNborderWidth,1,//境界線
					//リソースここまで
					NULL);

	//テキストボックスにテキストを入れる
	setStr(edit1,"testTEXT");

	//カレットを文字列の最後尾に移動
	XawTextSetInsertionPoint(edit1,strlen("testTEXT"));
	
	//XawTextSetSelection(edit1,1,strlen("testTest"));//テキストを選択

	XtAddCallback( XawTextGetSource(edit1), XtNcallback,Edit1Callback, NULL );//テキストのコールバック関数を登録

	//ボタンの作成
	Widget button1 = XtVaCreateManagedWidget("button1",//ウィジット名
					commandWidgetClass,//ボタンクラスを指定
					form,
					//リソースの直接入力(どんどん追加できる)
					XtNlabel,"Button1 test",//表示される文字
					XtNhorizDistance, 50,//開始位置
					XtNvertDistance,55,
					XtNwidth,100,//幅と高さ
					XtNheight,20,
					XtNborderWidth,1,//境界線
					//リソースここまで
					NULL);

	XtAddCallback(button1, XtNcallback,Button1Callback, NULL );//ボタンのコールバック関数を登録


	XtRealizeWidget( top );
	XtAppMainLoop( app_context );
}





▲トップページ > Linux と C