○内包するウィジットのサイズに合わせてスクロールバーを付ける
■viewportWidgetの中のWigetのサイズに合わせて自動的にスクロールバーが付きます
Arg ar[16];
int arc=0;
XtSetArg(ar[arc], XtNallowHoriz,(XtArgVal)True); arc++;//横スクロールを表示(表示しなければ中身がリサイズされる)
XtSetArg(ar[arc], XtNallowVert,(XtArgVal)True); arc++;//縦スクロールを表示(表示しなければ中身がリサイズされる)
XtSetArg(ar[arc], XtNuseRight,(XtArgVal)True); arc++;//横スクロールバーの配置位置(右か左か)
XtSetArg(ar[arc], XtNuseBottom,(XtArgVal)True); arc++;//縦スクロールバーの配置位置(上か下か)
XtSetArg(ar[arc], XtNwidth,(XtArgVal)100); arc++;//幅
XtSetArg(ar[arc], XtNheight,(XtArgVal)100); arc++;//高さ
Widget viewport = XtCreateManagedWidget ("viewport",viewportWidgetClass,top, ar,arc);
▼ただし、サイズが 横幅:32761 高さ:32765 以上のものは入れられません
■大きなラベルをviewportの中に入れてスクロールバーを表示させるプログラム
#include <X11/StringDefs.h>
#include <X11/Intrinsic.h>
#include <X11/Xaw/Form.h>
#include <X11/Xaw/Label.h>
#include <X11/Xaw/Viewport.h>
main( int argc, char **argv )
{
XtAppContext app_context;
Widget top;
top = XtVaAppInitialize( &app_context, "test", NULL, 0, &argc, argv, NULL,NULL);
Arg ar[16];
int arc=0;
XtSetArg(ar[arc], XtNallowHoriz,(XtArgVal)True); arc++;//横スクロールを表示(表示しなければ中身がリサイズされる)
XtSetArg(ar[arc], XtNallowVert,(XtArgVal)True); arc++;//縦スクロールを表示(表示しなければ中身がリサイズされる)
XtSetArg(ar[arc], XtNuseRight,(XtArgVal)True); arc++;//スクロールバーの配置位置(右か左か)
XtSetArg(ar[arc], XtNuseBottom,(XtArgVal)True); arc++;//スクロールバーの配置位置(上か下か)
XtSetArg(ar[arc], XtNwidth,(XtArgVal)100); arc++;//幅
XtSetArg(ar[arc], XtNheight,(XtArgVal)100); arc++;//高さ
Widget viewport = XtCreateManagedWidget ("viewport",viewportWidgetClass,top, ar,arc);
Widget form = XtVaCreateManagedWidget("form",formWidgetClass,viewport,NULL);
XtVaCreateManagedWidget("Label",labelWidgetClass,form,XtNlabel,"label test",
XtNwidth,200,//幅と高さ
XtNheight,200,
NULL);
XtRealizeWidget( top );
XtAppMainLoop( app_context );
}
▲トップページ
>
Linux と C