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

📄 test24.c

📁 安装DDD之前
💻 C
字号:
/** $Header: /cvsroot/lesstif/lesstif/test/Xm/rowcolumn/test24.c,v 1.7 2001/05/15 14:46:10 amai Exp $    -- vertical tight layout of widgets with XmNadjustLast = False.    resulting layout should be something like this:    button1    button2    button3    button4    button5    resizing smaller will yield something like this:    button1 button4    button2 button5    button3**/#include <stdlib.h>#include <stdio.h>#include <Xm/XmP.h>#ifdef LESSTIF_REVISION#include <XmI/XmI.h>#endif#include <Xm/RowColumnP.h>#include <Xm/PushB.h>#ifdef LESSTIF_REVISIONXmRCKidGeometry_XmRCGetKidGeo(Widget w, Widget instig,               XtWidgetGeometry *instig_request,               int uniform_border, Dimension border,               int uniform_width_margins, int uniform_height_margins,               Widget help, Widget toc, int geoType){    int i;    XmRCKidGeometry kid_geometry;    Dimension mmt = 0, mmb = 0;    XmRCKidGeometry boxes = NULL; printf("%s GET KID GEO: Type: %d %p %p ", XtName(w), geoType, instig, instig_request);if (instig)	printf("%s\n", XtName(instig));else	printf("\n");    boxes = (XmRCKidGeometry)XtCalloc(MGR_NumChildren(w) + 1,                                      sizeof(XmRCKidGeometryRec));    for (i = 0; i < MGR_NumChildren(w); i++)    {        kid_geometry = &(boxes[i]);        kid_geometry->kid = MGR_Children(w)[i];          if (!XtIsManaged(kid_geometry->kid))        {            if (RCC_WasManaged(kid_geometry->kid))            {                RCC_WasManaged(kid_geometry->kid) = False;            }            continue;        }         _XmGeoLoadValues(kid_geometry->kid, geoType,                             instig, instig_request, &kid_geometry->box);          RCC_WasManaged(kid_geometry->kid) = True;         kid_geometry->box.width += (2 * XtBorderWidth(kid_geometry->kid));        kid_geometry->box.height += (2 * XtBorderWidth(kid_geometry->kid));         if (mmt < RCC_MarginTop(kid_geometry->kid))            mmt = RCC_MarginTop(kid_geometry->kid);        if (mmb < RCC_MarginBottom(kid_geometry->kid))            mmb = RCC_MarginBottom(kid_geometry->kid);    }     for (i = 0; i < MGR_NumChildren(w); i++)    {        kid_geometry = &(boxes[i]);         if (!XtIsManaged(kid_geometry->kid) || !RC_DoMarginAdjust(w))            continue;         if (mmt > kid_geometry->margin_top)            kid_geometry->margin_top = mmt;        if (mmb > kid_geometry->margin_bottom)            kid_geometry->margin_bottom = mmb;    }     return boxes;}#endifvoid_XmRCSetKidGeo(XmRCKidGeometry kg, Widget instigator){    /* Now we actually lay out our children.  */    while (kg->kid != NULL)    {        if (kg->kid == instigator)        {            XtX(instigator) = kg->box.x;            XtY(instigator) = kg->box.y;            XtWidth(instigator) = kg->box.width;            XtHeight(instigator) = kg->box.height;            instigator->core.border_width = kg->box.border_width;        }        else if (kg->box.x != XtX(kg->kid) ||                 kg->box.y != XtY(kg->kid) ||                 kg->box.width != XtWidth(kg->kid) ||                 kg->box.height != XtHeight(kg->kid) ||                 kg->box.border_width != XtBorderWidth(kg->kid))            _XmConfigureObject(kg->kid,                               kg->box.x, kg->box.y,                               kg->box.width, kg->box.height,                               kg->box.border_width);        kg++;    }} voidresize(Widget w, XtPointer a, XtPointer b){    XtUnmanageChild(w);    XtVaSetValues(w, XmNwidth, 100, XmNheight, 100, NULL);    XtManageChild(w);}voidchangelab(Widget w, XtPointer a, XtPointer b){    XmString str = XmStringCreateSimple("This is a changed string");    XtVaSetValues(w, XmNlabelString, str, NULL);}voidunman(Widget w, XtPointer a, XtPointer b){    XtUnmanageChild(w);}voidsetpos(Widget w, XtPointer a, XtPointer b){    XtVaSetValues(w, XmNpositionIndex, 1, NULL);}intmain(int argc, char **argv){    XtAppContext theApp;    Widget toplevel, rc, rc0;    Widget button0, button1, button2, button3, button4, button5;    toplevel = XtVaAppInitialize(&theApp, "rc-test1", NULL, 0,				 &argc, argv, NULL, NULL);    rc0 = XtVaCreateManagedWidget("RCParent", xmRowColumnWidgetClass,				  toplevel, NULL);    button0 = XtVaCreateManagedWidget("button0",				      xmPushButtonWidgetClass,				      rc0,				      NULL);    rc = XtVaCreateManagedWidget("rowcolumn",				 xmRowColumnWidgetClass,				 rc0,				 XmNorientation, XmVERTICAL,				 XmNpacking, XmPACK_TIGHT,				 XmNadjustLast, False,				 XmNwidth, 500,				 XmNheight, 500,				 NULL);    button1 = XtVaCreateManagedWidget("button1",				      xmPushButtonWidgetClass,				      rc,				      NULL);    button2 = XtVaCreateWidget("button2",				      xmPushButtonWidgetClass,				      rc,				      XtNwidth, 200, XtNheight, 200,				      NULL);    XtManageChild(button2);    XtAddCallback(button2, XmNactivateCallback, resize, NULL);    button3 = XtVaCreateManagedWidget("button3",				      xmPushButtonWidgetClass,				      rc,				      NULL);    XtAddCallback(button3, XmNactivateCallback, changelab, NULL);    button4 = XtVaCreateManagedWidget("button4",				      xmPushButtonWidgetClass,				      rc,				      NULL);    XtAddCallback(button4, XmNactivateCallback, unman, NULL);    button5 = XtVaCreateManagedWidget("button5",				      xmPushButtonWidgetClass,				      rc,				      NULL);    XtAddCallback(button5, XmNactivateCallback, setpos, NULL);    XtRealizeWidget(toplevel);  {  static XtWidgetGeometry Expected[] = {  	CWWidth | CWHeight,		0,	0,	300,	85,	0,0,0,  	CWWidth | CWHeight | CWX | CWY,	3,	3,	96,	38,	0,0,0,  	CWWidth | CWHeight | CWX | CWY,	102,	3,	96,	38,	0,0,0,  	CWWidth | CWHeight | CWX | CWY,	201,	3,	96,	38,	0,0,0,  	CWWidth | CWHeight | CWX | CWY,	3,	44,	96,	38,	0,0,0,  	CWWidth | CWHeight | CWX | CWY,	102,	44,	96,	38,	0,0,0,};#if 0  PrintDetails(toplevel, Expected);#endif  }    LessTifTestMainLoop(toplevel);    /*    XtAppMainLoop(theApp);        */    exit(0);}

⌨️ 快捷键说明

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