📄 test10.c
字号:
/* $Header: /cvsroot/lesstif/lesstif/test/Xm/scrolledwindow/test10.c,v 1.7 2002/05/01 15:27:19 amai Exp $ *//*** Generated by X-Designer ** traverse obscured*//***LIBS: -lXm -lXt -lX11*/#include <stdlib.h>#include <stdio.h>#include <X11/Xatom.h>#include <X11/Intrinsic.h>#include <X11/Shell.h>#include <Xm/Xm.h>#include <Xm/DialogS.h>#include <Xm/Form.h>#include <Xm/Label.h>#include <Xm/PushB.h>#include <Xm/RowColumn.h>#include <Xm/ScrollBar.h>#include <Xm/ScrolledW.h>#include "../../common/Test.h"extern void traverse_obscured ();extern Boolean aardvarkConverter ();extern Boolean objStringConverter ();Widget appshell = (Widget) NULL;Widget form = (Widget) NULL;Widget scrollwin = (Widget) NULL;Widget hsb = (Widget) NULL;Widget vsb = (Widget) NULL;Widget rowcol = (Widget) NULL;Widget button1 = (Widget) NULL;Widget button2 = (Widget) NULL;Widget button3 = (Widget) NULL;Widget label = (Widget) NULL;void traverse_obscured(w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data;{ XmScrollVisible(w, ((XmTraverseObscuredCallbackStruct *) call_data)->traversal_destination, 0, 0);}void create_appshell (display, app_name, app_argc, app_argv)Display *display;char *app_name;int app_argc;char **app_argv;{ Widget children[3]; /* Children to manage */ Arg al[64]; /* Arg List */ register int ac = 0; /* Arg Count */ XmString xmstrings[16]; /* temporary storage for XmStrings */ XtSetArg(al[ac], XmNallowShellResize, TRUE); ac++; XtSetArg(al[ac], XmNtitle, "Automatic Traversal to Obscured Widgets in Scrolled Window"); ac++; XtSetArg(al[ac], XmNargc, app_argc); ac++; XtSetArg(al[ac], XmNargv, app_argv); ac++; appshell = XtAppCreateShell ( app_name, "XApplication", applicationShellWidgetClass, display, al, ac ); ac = 0; XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++; XtSetArg(al[ac], XmNhorizontalSpacing, 10); ac++; XtSetArg(al[ac], XmNverticalSpacing, 10); ac++; form = XmCreateForm ( appshell, "form", al, ac ); ac = 0; XtSetArg(al[ac], XmNscrollingPolicy, XmAUTOMATIC); ac++; scrollwin = XmCreateScrolledWindow ( form, "scrollwin", al, ac ); ac = 0; XtSetArg(al[ac], XmNhorizontalScrollBar, &hsb ); ac++; XtSetArg(al[ac], XmNverticalScrollBar, &vsb ); ac++; XtGetValues(scrollwin, al, ac ); ac = 0; XtSetArg(al[ac], XmNorientation, XmHORIZONTAL); ac++; rowcol = XmCreateRowColumn ( scrollwin, "rowcol", al, ac ); ac = 0; button1 = XmCreatePushButton ( rowcol, "button1", al, ac ); button2 = XmCreatePushButton ( rowcol, "button2", al, ac ); button3 = XmCreatePushButton ( rowcol, "button3", al, ac ); xmstrings[0] = XmStringCreateLtoR("Use arrow keys to traverse between buttons.\nTraversing to an obscured button will scroll the window to reveal it.", (XmStringCharSet)XmFONTLIST_DEFAULT_TAG); XtSetArg(al[ac], XmNlabelString, xmstrings[0]); ac++; label = XmCreateLabel ( form, "label", al, ac ); ac = 0; XmStringFree ( xmstrings [ 0 ] ); XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++; XtSetArg(al[ac], XmNtopWidget, label); ac++; XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++; XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++; XtSetValues ( scrollwin,al, ac ); ac = 0; XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++; XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++; XtSetValues ( label,al, ac ); ac = 0; XtAddCallback (scrollwin, XmNtraverseObscuredCallback, traverse_obscured,NULL); children[ac++] = button1; children[ac++] = button2; children[ac++] = button3; XtManageChildren(children, ac); ac = 0; children[ac++] = rowcol; XtManageChildren(children, ac); { unsigned char policy; XtVaGetValues(scrollwin, XmNscrollBarDisplayPolicy, &policy, NULL); printf("scrollBarDisplayPolicy %s\n", policy == XmSTATIC ? "XmSTATIC" : "XmAS_NEEDED"); } ac = 0; XmScrolledWindowSetAreas(scrollwin, hsb, vsb, rowcol ); { unsigned char policy; XtVaGetValues(scrollwin, XmNscrollBarDisplayPolicy, &policy, NULL); printf("scrollBarDisplayPolicy %s\n", policy == XmSTATIC ? "XmSTATIC" : "XmAS_NEEDED"); } children[ac++] = scrollwin; children[ac++] = label; XtManageChildren(children, ac); ac = 0; XtManageChild ( form); XtAddCallback(button1, XmNactivateCallback, XdbPrintTreeCB, (XtPointer)form);}XtAppContext app_context;Display *display; /* Display */int main (argc,argv)int argc;char **argv;{ XtSetLanguageProc ( (XtAppContext) NULL, (XtLanguageProc) NULL, (XtPointer) NULL ); XtToolkitInitialize (); app_context = XtCreateApplicationContext (); display = XtOpenDisplay (app_context, NULL, argv[0], "XApplication", NULL, 0, &argc, argv); if (!display) { printf("%s: can't open display, exiting...\n", argv[0]); exit (-1); } create_appshell ( display, argv[0], argc, argv ); XtRealizeWidget (appshell); { static XtWidgetGeometry Expected[] = { CWWidth | CWHeight , 508, 524, 428, 150, 0,0,0, /* form */ CWWidth | CWHeight | CWX | CWY, 10, 50, 100, 100, 0,0,0, /* scrollwin */ CWWidth | CWHeight | CWX | CWY, 4, 2, 92, 71, 0,0,0, /* ScrolledWindowClipWindow */ CWWidth | CWHeight | CWX | CWY, 0, 0, 174, 31, 0,0,0, /* rowcol */ CWWidth | CWHeight | CWX | CWY, 3, 3, 54, 25, 0,0,0, /* button1 */ CWWidth | CWHeight | CWX | CWY, 60, 3, 54, 25, 0,0,0, /* button2 */ CWWidth | CWHeight | CWX | CWY, 117, 3, 54, 25, 0,0,0, /* button3 */ CWWidth | CWHeight | CWX | CWY, 100, 0, 19, 100, 0,0,0, /* VertScrollBar */ CWWidth | CWHeight | CWX | CWY, 0, 81, 100, 19, 0,0,0, /* HorScrollBar */ CWWidth | CWHeight | CWX | CWY, 10, 10, 418, 30, 0,0,0, /* label */ }; LessTifTestSetSlop(appshell, 2); PrintDetails(appshell,Expected);}; LessTifTestMainLoop(appshell); exit (0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -