○ウインドウの表示・非表示


	if(XtIsRealized(top2)){//ウインドウの表示状態を確認
		XtUnrealizeWidget(top2);//ウインドウを非表示にする
	}else{
		XtRealizeWidget(top2);//ウインドウを表示する
	}



■ボタンを押すとウインドウの表示・非表示を繰り返します



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

Widget top1,top2,form1,form2;
Widget button1,label1;


//ボタンが押された時の動作
void Button1Callback( Widget w, XtPointer client, XtPointer called )
{
	if(XtIsRealized(top2)){//ウインドウの表示状態を確認
		XtUnrealizeWidget(top2);//ウインドウを非表示にする
	}else{
		XtRealizeWidget(top2);//ウインドウを表示する
	}
}

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

	XtToolkitInitialize();//初期化
	app_context = XtCreateApplicationContext();

	//form1を作成
	{
		Display *d = XtOpenDisplay(app_context, NULL, NULL, NULL, NULL, 0, &argc, argv);
		top1 = XtAppCreateShell("form1", "form1", applicationShellWidgetClass, d,NULL,0);
		form1 = XtVaCreateManagedWidget("form1",formWidgetClass,top1,
					//XtNheight,200,
					//XtNwidth, 200,
					NULL);
	}

	//form2を作成
	{
		Display *d = XtOpenDisplay(app_context, NULL, NULL, NULL, NULL, 0, &argc, argv);
		top2 = XtAppCreateShell("form2", "form2", applicationShellWidgetClass, d,NULL,0);
		form2 = XtVaCreateManagedWidget("form2",formWidgetClass,top2,
					//XtNheight,200,//サイズが再計算されるため意味が無くなる
					//XtNwidth, 200,
					NULL);
	}

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

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

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

	XtRealizeWidget(top1);//top1の表示

	XtAppMainLoop(app_context);
}









▲トップページ > Linux と C