■ウィジットと文字

//ボタンやラベルの文字を変更する
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