○ウィジット
■Athenaウィジットを使用したプログラムのコンパイルを行うコマンド
gcc -o test test.c -I/usr/X11R6/include -lXaw -lXt -lX11 -L/usr/X11R6/lib
下のプログラムをコンパイルすると実行できます
■背景色を変えたい時は、実行する時の引数で必要なリソースを操作します
▼灰色の背景で実行
./test -xrm '*form.background: gray'
#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>
//Textウィジットから文字列を取得
void getStr(Widget w,char*str){
char*st;
Arg args[1];
XtSetArg(args[0],XtNstring,(XtArgVal)&st);
XtGetValues(w,args,1);
strcpy(str,st);
}
//Textウィジットに文字を入れる
void setStr(Widget w,char*str){
Arg args[1];
XtSetArg(args[0],XtNstring,(XtArgVal)str);
XtSetValues(w,args,1);
}
//ボタンが押された時の動作
void Button1Callback( Widget w, XtPointer client, XtPointer called )
{
exit(0);
}
//テキストが入力された時の動作、入力されているテキストを表示
void Edit1Callback( Widget w, XtPointer cld, XtPointer cad ){
char str[128]="";
getStr(w,str);
printf("%s\n",str);
}
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,NULL);
//ラベルの作成
Widget label1 = XtVaCreateManagedWidget("label1",//ウィジット名
labelWidgetClass,//ラベルクラスを指定
form,
//リソースの直接入力(どんどん追加できる)
XtNlabel,"Label1 test",//表示される文字
XtNhorizDistance,5,//開始位置
XtNvertDistance,5,
XtNwidth,100,//幅と高さ
XtNheight,20,
XtNborderWidth,1,//境界線
//リソースここまで
NULL);
//テキストの作成
Widget edit1 = XtVaCreateManagedWidget("edit1",//ウィジット名
asciiTextWidgetClass,//クラスを指定
form,
//リソースの直接入力(どんどん追加できる)
XtNeditType,XawtextEdit,//読み書き可能
//XtNeditType,XawtextRead,//リードオンリー
//XtNeditType,XawtextAppend,//追加のみ
XtNecho,True,//入力文字を表示
//XtNstring,"test",//初期値
//XtNdisplayCaret,False,//カレットを表示しない
//XtNscrollHorizontal,XawtextScrollAlways,//横方向のスクロールバーを表示
//XtNscrollVertical,XawtextScrollAlways,//縦方向のスクロールバーを表示
//XtNwrap,XawtextWrapWord,//自動折り返し もしくは XawtextWrapLine
XtNhorizDistance,25,//開始位置
XtNvertDistance,30,
XtNwidth,100,//幅と高さ
//XtNheight,200,
XtNborderWidth,1,//境界線
//リソースここまで
NULL);
//テキストボックスにテキストを入れる
setStr(edit1,"testTEXT");
//カレットを文字列の最後尾に移動
XawTextSetInsertionPoint(edit1,strlen("testTEXT"));
//XawTextSetSelection(edit1,1,strlen("testTest"));//テキストを選択
XtAddCallback( XawTextGetSource(edit1), XtNcallback,Edit1Callback, NULL );//テキストのコールバック関数を登録
//ボタンの作成
Widget button1 = XtVaCreateManagedWidget("button1",//ウィジット名
commandWidgetClass,//ボタンクラスを指定
form,
//リソースの直接入力(どんどん追加できる)
XtNlabel,"Button1 test",//表示される文字
XtNhorizDistance, 50,//開始位置
XtNvertDistance,55,
XtNwidth,100,//幅と高さ
XtNheight,20,
XtNborderWidth,1,//境界線
//リソースここまで
NULL);
XtAddCallback(button1, XtNcallback,Button1Callback, NULL );//ボタンのコールバック関数を登録
XtRealizeWidget( top );
XtAppMainLoop( app_context );
}
▲トップページ
>
Linux と C