○チェックボックス
チェックボックスは四角部分(■)だけですのでとなりにラベルなどを貼り付ける必要があります
■チェックボックスの作成
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