○ウインドウの表示・非表示
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