○コントロールの有効・無効 表示・非表示 の切り替え



▼コントロールを有効にする
XtVaSetValues(label1, XtNsensitive,True, NULL );

▼コントロールを無効にする
XtVaSetValues(label1, XtNsensitive,False, NULL );

▼コントロールを表示する
XtVaSetValues(label1, XtNmappedWhenManaged,True, NULL );

▼コントロールを非表示にする
XtVaSetValues(label1, XtNmappedWhenManaged,False, NULL );



■500msごとに有効・無効を切り替える










#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>

Widget form,label1,edit1,button1;//ウィジットの変数

int i=0;

//タイマーとして動作
void timer(XtAppContext app_context) 
{
	if(i){
		//有効化
		XtVaSetValues(label1, XtNsensitive,True, NULL );
		XtVaSetValues(edit1, XtNsensitive,True, NULL );
		XtVaSetValues(button1, XtNsensitive,True, NULL );
		i=0;
	}else{
		//無効化
		XtVaSetValues(label1, XtNsensitive,False, NULL );
		XtVaSetValues(edit1, XtNsensitive,False, NULL );
		XtVaSetValues(button1, XtNsensitive,False, NULL );
		i=1;
	}

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

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

	top = XtVaAppInitialize( &app_context, "test", NULL, 0, &argc, argv, NULL,NULL);

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

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

	//テキストの作成
	edit1 = XtVaCreateManagedWidget("edit1",//ウィジット名
					asciiTextWidgetClass,//クラスを指定
					form,
					//リソースの直接入力(どんどん追加できる)
					XtNeditType,XawtextEdit,//読み書き可能
					XtNecho,True,//入力文字を表示
					XtNhorizDistance,25,//開始位置
					XtNvertDistance,30,
					XtNwidth,100,//幅と高さ
					//XtNheight,200,
					XtNborderWidth,1,//境界線
					//リソースここまで
					NULL);


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


	//経過時間後に関数を呼び出し、タイマーをスタートする
	XtAppAddTimeOut(app_context, 500, (XtTimerCallbackProc)timer,app_context); 

	XtRealizeWidget( top );
	XtAppMainLoop( app_context );
}








▲トップページ > Linux と C