○ウィジットを最前面に移動

■ウィンドウを最前面に移動
XRaiseWindow(XtDisplay(label1),XtWindow(label1));


■500msごとに、ラベルを交互に最前面に移動します









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

Widget top, form;
Widget label1,label2;

int flag=0;

//タイマーとして動作
void timer(XtAppContext app_context) 
{
	//ここにタイマーの処理内容を書く
	if(flag){
		//ウィンドウを最前面に移動
		XRaiseWindow(XtDisplay(label1),XtWindow(label1));
		flag=0;
	}else{
		//ウィンドウを最前面に移動
		XRaiseWindow(XtDisplay(label2),XtWindow(label2));
		flag=1;
	}
	//経過時間後に関数を呼び出す設定(ミリ秒)
	XtAppAddTimeOut(app_context, 500, (XtTimerCallbackProc)timer,app_context); 
}


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


	top = XtVaAppInitialize( &app_context, "test", NULL, 0, &argc, argv, NULL,
		XtNhorizDistance,0,
		XtNvertDistance,0,
		//XtNwidth,500,
		//XtNheight,500,
		NULL);


	form = XtVaCreateManagedWidget("form",formWidgetClass,top,NULL);

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

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


	XtRealizeWidget( top );

	//経過時間後に関数を呼び出す設定(ミリ秒)
	XtAppAddTimeOut(app_context, 500, (XtTimerCallbackProc)timer,app_context); 

	XtAppMainLoop( app_context );
}











▲トップページ > Linux と C