■ウィジットと文字
//ボタンやラベルの文字を変更する
void setCaption(Widget w,char*str){
Arg args[1];
XtSetArg(args[0],XtNlabel,(XtArgVal)str);
XtSetValues(w,args,1);
XClearArea(XtDisplay(w), XtWindow(w), 0, 0, 0, 0, True);//再描画
//XFlush(XtDisplay(w));//バッファをフラッシュ
}
//ボタンやラベルの文字を取得する
void getCaption(Widget w,char*str){
char*st;
Arg args[1];
XtSetArg(args[0],XtNlabel,(XtArgVal)&st);
XtGetValues(w,args,1);
strcpy(str,st);
}
//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);
//XFlush(XtDisplay(w));//バッファをフラッシュ
}
■WidgetからDisplayとWindowを取得
Display*dsp = XtDisplay(Widget);
Window win = XtWindow(Widget);
■リソースの作成
Arg ar[16];
int arc=0;
XtSetArg(ar[arc],XtNborderWidth,(XtArgVal)0);arc++;
//XtSetValues(Widget,ar,arc);//リソースの設定
■リソースの取得
//横幅を取得します
int st;
Arg args[1];
XtSetArg(args[0],XtNwidth,(XtArgVal)&st);
XtGetValues(Widget,args,1);
■リソースの取得と設定
//取得
int height=0;
XtVaGetValues( Widget, XtNheight, &height, NULL );
//設定
XtVaSetValues( Widget, XtNheight,100, NULL );
■ウインドウの表示
XtRealizeWidget( top );
■ウインドウの非表示
XtUnrealizeWidget(top);
■ウィンドウの破棄
XtDestroyWidget(top);
■ウィンドウの無効化
XtSetSensitive(top,False);
■ウィジットの名前を取得
printf("%s\n",XtName(top));
■画面サイズ取得
printf("x=%d y=%d\n",DisplayWidth(XtDisplay(top),0),DisplayHeight(XtDisplay(top), 0));
■ウィンドウ位置、サイズ取得
unsigned int x,y,width, height, border, depth;
Window rwin;
XGetGeometry(XtDisplay(top),XtWindow(top),&rwin,&x, &y, &width, &height, &border, &depth);
printf("x=%d y=%d width=%d height=%d border=%d depth=%d\n",x,y,width,height,border,depth);
■ウィンドウの位置、サイズ設定
XMoveResizeWindow(XtDisplay(top),XtWindow(top),x,y,width,height);
■フォームの位置を画面中央に移動
//画面サイズ取得
int dx = DisplayWidth(XtDisplay(top),0);
int dy = DisplayHeight(XtDisplay(top), 0);
// ウィンドウ位置、サイズ取得
unsigned int x,y,width, height, border, depth;
Window rwin;
XGetGeometry(XtDisplay(top),XtWindow(top),&rwin,&x, &y, &width, &height, &border, &depth);
printf("x=%d y=%d width=%d height=%d border=%d depth=%d\n",x,y,width,height,border,depth);
//ウィンドウの位置、サイズ設定
XMoveResizeWindow(XtDisplay(top),XtWindow(top),(dx-width)/2,(dy-height-depth)/2,width,height);
■フォーカスの在るウィンドウを調べる
top1,top2のうち、どちらにフォーカスがあるか調べる
Window focuswin;
int rev;
XGetInputFocus(XtDisplay(top1), &focuswin, &rev);
if(focuswin==XtWindow(top1)){
printf("form1\n");
}else if(focuswin==XtWindow(top2)){
printf("form2\n");
}
▲トップページ
>
Linux と C