⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test20.c

📁 安装DDD之前
💻 C
字号:
/* $Header: /cvsroot/lesstif/lesstif/test/Xm/list/test20.c,v 1.3 2001/05/15 13:51:56 amai Exp $ *//*From:        Eric Howe <mu@trends.net>To:          lesstif@lesstif.orgSubject:     Re: list sizing and mgv's page listDate:        Sun, 22 Nov 1998 14:59:24 -0500 (EST)*//* * Mini simulation of the mgv main window.  This program demonstrates * the (classic?) page list resizing bug.  Clicking in the list will * switch between a wide and thin set of entries; in Motif, the page * list will grow/shrink based on how wide the entries are. * * Also, this will demonstrate another sizing problem:  if you make the * window too short, the page list's vertical scrollbar isn't changing * it's thumb size. * *	--mu@trends.net, 1998.11.22 */#include <stdlib.h>#include <stdio.h>#include <Xm/List.h>#include <Xm/Form.h>#include <Xm/ScrolledW.h>#include <Xm/PushB.h>#include "../../common/Test.h"#define ITEMS 5static XmString thin_items[ITEMS];static XmString wide_items[ITEMS];static Boolean using_thin;Widget list;static voidcleanup(Widget w, XtPointer closure, XtPointer call){	int i;	for(i = 0; i < ITEMS; ++i) {		XmStringFree(thin_items[i]);		XmStringFree(wide_items[i]);	}}static voiddothings(Widget w, XtPointer closure, XtPointer call){	XmString *items = using_thin ? wide_items : thin_items;	XmListDeleteAllItems(list);	XtVaSetValues(list, XmNitems, items, XmNitemCount, ITEMS, NULL);	using_thin = !using_thin;	/*	 * Now I remember, I came up with this grusome hack to get the	 * page list to resize, sigh.  See page.c:mgv_page_labels in	 * the mgv source if you want to full version.	 *	 * In the mgv sources I have	 *	 *	XtVaSetValues(XtParent(w),	 *		XmNrightAttachment, XmATTACH_FORM,	 *		NULL);	 *	 * between these two calls.  I'm pretty certain that it is there	 * for a reason but taking it out has no effect in Motif 2.0.1 so	 * it may just be a historic artifact or a Motif 1.2 thing.	 *	 * BTW, does anyone know the "right" way to get this effect?  This	 * seems to be a little bogus to me.	 *	 * NOTE:  even without this hack you can get the page list to	 * change to the "right" size by resizing the main window (width	 * or height).  This resize-the-window trick works with Motif	 * but not LessTif (LessTif resizes the scrolled window).	 */	XtUnmanageChild(XtParent(list));	XtManageChild(XtParent(list));}intmain(int argc, char **argv){	XtAppContext ac;	Widget top, sw, form;	Arg a[19];	int n;	char buf[32];	top = XtVaAppInitialize(&ac, "Blech", NULL, 0, &argc, argv, NULL, NULL);	for(n = 0; n < ITEMS; ++n) {		sprintf(buf, "item%d", n + 1);		thin_items[n] = XmStringCreateLocalized(buf);	}	for(n = 0; n < ITEMS; ++n) {		sprintf(buf, "ITEMITEM%d", n + 1);		wide_items[n] = XmStringCreateLocalized(buf);	}	form = XtVaCreateWidget("form", xmFormWidgetClass, top, NULL);	XtAddCallback(form, XmNdestroyCallback, cleanup, NULL);	n = 0;	XtSetArg(a[n], XmNrightAttachment, XmATTACH_FORM);	++n;	XtSetArg(a[n], XmNtopAttachment, XmATTACH_FORM);	++n;	XtSetArg(a[n], XmNbottomAttachment, XmATTACH_FORM);	++n;	XtSetArg(a[n], XmNscrollBarDisplayPolicy, XmSTATIC);	++n;	XtSetArg(a[n], XmNvisualPolicy, XmVARIABLE);		++n;	XtSetArg(a[n], XmNresizable, True);			++n;	XtSetArg(a[n], XmNselectionPolicy, XmBROWSE_SELECT);	++n;	XtSetArg(a[n], XmNresizePolicy, XmRESIZE_IF_POSSIBLE);	++n;	list = XmCreateScrolledList(form, "list", a, n);	XtAddCallback(list, XmNbrowseSelectionCallback, dothings, NULL);	XtManageChild(list);	using_thin = True;	XtVaSetValues(list, XmNitems, thin_items, XmNitemCount, ITEMS, NULL);	n = 0;	XtSetArg(a[n], XmNtopAttachment, XmATTACH_FORM);	++n;	XtSetArg(a[n], XmNbottomAttachment, XmATTACH_FORM);	++n;	XtSetArg(a[n], XmNleftAttachment, XmATTACH_FORM);	++n;	XtSetArg(a[n], XmNscrollBarDisplayPolicy, XmSTATIC);	++n;	XtSetArg(a[n], XmNrightAttachment, XmATTACH_WIDGET);	++n;	XtSetArg(a[n], XmNrightWidget, XtParent(list));		++n;	XtSetArg(a[n], XmNscrollingPolicy, XmAUTOMATIC);	++n;	XtSetArg(a[n], XmNwidth, 100);	++n;	XtSetArg(a[n], XmNheight, 100);	++n;	sw = XmCreatePushButton(form, "sw", a, n);	XtAddCallback(sw, XmNactivateCallback, dothings, NULL);	XtManageChild(sw);	XtManageChild(form);	XtRealizeWidget(top);/* Note: the following values are the result of * querying the current geometry. */{XtWidgetGeometry Expected[] = {   CWWidth | CWHeight            ,  669,  583,  159,  100, 0,0,0, /* form */   CWWidth | CWHeight | CWX | CWY,  100,    0,   59,  100, 0,0,0, /* listSW */   CWWidth | CWHeight | CWX | CWY,   44,    0,   15,  100, 0,0,0, /* VertScrollBar */   CWWidth | CWHeight | CWX | CWY,    0,    0,   40,  100, 0,0,0, /* list */   CWWidth | CWHeight | CWX | CWY,    0,    0,  100,  100, 0,0,0, /* sw */   CWWidth | CWHeight            ,  669,  583,  159,  100, 0,0,0, /* form */   CWWidth | CWHeight | CWX | CWY,   76,    0,   83,  100, 0,0,0, /* listSW */   CWWidth | CWHeight | CWX | CWY,   68,    0,   15,  100, 0,0,0, /* VertScrollBar */   CWWidth | CWHeight | CWX | CWY,    0,    0,   64,  100, 0,0,0, /* list */   CWWidth | CWHeight | CWX | CWY,    0,    0,   76,  100, 0,0,0, /* sw */};/* toplevel should be replaced with to correct applicationShell */	PrintDetails(top, Expected);	LessTifTestWaitForIt(top);	LessTifTestPushButton(sw);	LessTifTestWaitForIt(top);	PrintDetails(top, Expected);}	LessTifTestMainLoop(top);	/*	XtAppMainLoop(ac);	*/	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -