○チェックボックス



チェックボックスは四角部分(■)だけですのでとなりにラベルなどを貼り付ける必要があります

■チェックボックスの作成

	Widget check1 = XtVaCreateManagedWidget(NULL,//ウィジット名
					toggleWidgetClass,//クラスを指定
					form,
					XtNwidth,10,//幅と高さ
					XtNheight,10,
					XtNborderWidth,1,//境界線
					NULL);

▼チェックボックスにチェックを付ける

XtVaSetValues( check1, XtNstate, True, NULL );

▼チェックボックスのチェックの状態を取得する

char i;
XtVaGetValues( check1, XtNstate, &i, NULL );

■チェックボックスをグループにするには
一つのチェックボックスしかチェックできなくなります

	//ラジオグループとして使うチェックボックスの作成
	Widget RadioGroup=XtVaCreateManagedWidget(NULL,toggleWidgetClass,top,NULL);
	XawToggleChangeRadioGroup(check1,RadioGroup);//ラジオグループに参加
	XawToggleChangeRadioGroup(check2,RadioGroup);
	XawToggleChangeRadioGroup(check3,RadioGroup);


■フォームに3つのチェックボックスを貼り付けて、チェックの状態をタイマーにより出力します






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

Widget check1,check2,check3;

//タイマーとして動作
void timer(XtAppContext app_context) 
{
	//ここにタイマーの処理内容を書く
	char i,j,k;

	//チェックボックスの値を取得して表示
	XtVaGetValues( check1, XtNstate, &i, NULL );
	XtVaGetValues( check2, XtNstate, &j, NULL );
	XtVaGetValues( check3, XtNstate, &k, NULL );

	printf("check1:%d    check2:%d    check3:%d\n",i,j,k);

	//経過時間後に関数を呼び出す設定(ミリ秒)
	XtAppAddTimeOut(app_context, 500, (XtTimerCallbackProc)timer,app_context); 
}


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,
					XtNorientation, XtorientVertical,//縦配置
					NULL);

	//-----------------------------------------------------------------------------
	//frame1の作成
	Widget frame1 = XtVaCreateManagedWidget("form",formWidgetClass,form,
					XtNborderWidth,1,//境界線
					NULL);

	//check1の作成
	check1 = XtVaCreateManagedWidget(NULL,//ウィジット名
					toggleWidgetClass,//クラスを指定
					frame1,
					XtNwidth,10,//幅と高さ
					XtNheight,10,
					XtNborderWidth,1,//境界線
					NULL);
	//check1の横にラベルを追加
	XtVaCreateManagedWidget("Label",//ウィジット名
					labelWidgetClass,//ラベルクラスを指定
					frame1,
					//リソースの直接入力(どんどん追加できる)
					XtNlabel,"check1",//表示される文字
					XtNwidth, 150,//横幅
					XtNborderWidth,0,//境界線
					XtNfromHoriz,check1,XtNvertDistance, 2,//check1ウィジットの2ピクセル横に配置
					//リソースここまで
					NULL);
	//-----------------------------------------------------------------------------
	//frame2の作成
	Widget frame2 = XtVaCreateManagedWidget("form",formWidgetClass,form,
					XtNborderWidth,1,//境界線
					XtNfromVert,frame1,XtNvertDistance, 2,//frame1ウィジットの2ピクセル下に配置
					NULL);
	
	//check2の作成
	check2 = XtVaCreateManagedWidget(NULL,//ウィジット名
					toggleWidgetClass,//クラスを指定
					frame2,
					XtNwidth,10,//幅と高さ
					XtNheight,10,
					XtNborderWidth,1,//境界線
					NULL);
	//check2の横にラベルを追加
	XtVaCreateManagedWidget("Label",//ウィジット名
					labelWidgetClass,//ラベルクラスを指定
					frame2,
					//リソースの直接入力(どんどん追加できる)
					XtNlabel,"check2",//表示される文字
					XtNwidth, 150,//横幅
					XtNborderWidth,0,//境界線
					XtNfromHoriz,check2,XtNvertDistance, 2,//check1ウィジットの2ピクセル横に配置
					//リソースここまで
					NULL);
	//-----------------------------------------------------------------------------
	//frame3の作成
	Widget frame3 = XtVaCreateManagedWidget("form",formWidgetClass,form,
					XtNborderWidth,1,//境界線
					XtNfromVert,frame2,XtNvertDistance, 2,//frame2ウィジットの2ピクセル下に配置
					NULL);
	
	//check3の作成
	check3 = XtVaCreateManagedWidget(NULL,//ウィジット名
					toggleWidgetClass,//クラスを指定
					frame3,
					XtNwidth,10,//幅と高さ
					XtNheight,10,
					XtNborderWidth,1,//境界線
					NULL);
	//check3の横にラベルを追加
	XtVaCreateManagedWidget("Label",//ウィジット名
					labelWidgetClass,//ラベルクラスを指定
					frame3,
					//リソースの直接入力(どんどん追加できる)
					XtNlabel,"check3",//表示される文字
					XtNwidth, 150,//横幅
					XtNborderWidth,0,//境界線
					XtNfromHoriz,check3,XtNvertDistance, 2,//check1ウィジットの2ピクセル横に配置
					//リソースここまで
					NULL);
	//-----------------------------------------------------------------------------
	
	//チェックボックスにチェックを入れる
	XtVaSetValues( check2, XtNstate, True, NULL );

	//ラジオグループとして使うチェックボックスの作成
	//Widget RadioGroup=XtVaCreateManagedWidget(NULL,toggleWidgetClass,top,NULL);
	//XawToggleChangeRadioGroup(check1,RadioGroup);//ラジオグループに参加
	//XawToggleChangeRadioGroup(check2,RadioGroup);
	//XawToggleChangeRadioGroup(check3,RadioGroup);

	//タイマーの開始
	XtAppAddTimeOut(app_context, 500, (XtTimerCallbackProc)timer,app_context);

	XtRealizeWidget( top );
	XtAppMainLoop( app_context );
}











▲トップページ > Linux と C