0

如何将 MOTIF Widget 的主应用程序窗口居中在计算机屏幕的中心?例如这里的表单小部件。

代码已准备好并且可以工作,但窗口出现在屏幕的左上方。

#include <Xm/Form.h>
#include <Xm/Label.h>
#include <Xm/PushB.h>


void main ( int argc, char ** argv )

{
    Widget              shell, form, label, button;
    XtAppContext app;
    int  i;


    shell = XtAppInitialize ( &app, "Formtest", NULL, 0,
                              &argc, argv, NULL, NULL, 0 );


    form = XtCreateManagedWidget ( "form", xmFormWidgetClass,
                                    shell, NULL, 0 );

    XtVaSetValues ( form,
                  XmNwidth, 500, 
                  XmNheight, 300, 
                  NULL );               


    label = XtVaCreateManagedWidget ( "label", xmLabelWidgetClass,
                                    form, NULL, 0 );

    button = XtVaCreateManagedWidget ( "button", xmPushButtonWidgetClass,
                                    form, 
                                    XmNbottomAttachment,       XmATTACH_FORM,
                                     0 );
    XtVaSetValues ( button,
                  XmNwidth, 100, 
                  XmNheight, 50, 
                  NULL );


    XtRealizeWidget ( shell );
    XtAppMainLoop ( app );

}`````

This MOTIF Windows is working correct already.
The only thing i want to do is to position it in the middle of the computerscreen.
It has something to do with the command  Xtscreen.


4

1 回答 1

0

获取屏幕高度和宽度并进行调整。尝试以下操作:

#include <Xm/Form.h>
#include <Xm/Label.h>
#include <Xm/PushB.h>


int main ( int argc, char ** argv )
{
    Widget              shell, form, label, button;
    XtAppContext app;
    int  i;


    shell = XtAppInitialize ( &app, "Formtest", NULL, 0,
                          &argc, argv, NULL, NULL, 0 );

    Screen * s = XtScreen(shell);

    int dw = WidthOfScreen(s);
    int dh = HeightOfScreen( s );

    Dimension px = (dw-500)/2;
    Dimension py = (dh-300)/2;

    XtVaSetValues ( shell,
              XmNwidth, 500,
              XmNheight, 300,
              XmNx, px,
              XmNy, py,
              NULL );


    form = XtCreateManagedWidget ( "form", xmFormWidgetClass,
                                shell, NULL, 0 );

    label = XtVaCreateManagedWidget ( "label", xmLabelWidgetClass,
                                form, NULL, 0 );

    button = XtVaCreateManagedWidget ( "button", xmPushButtonWidgetClass,
                                form,
                                XmNbottomAttachment,       XmATTACH_FORM,
                                 0 );
    XtVaSetValues ( button,
              XmNwidth, 100,
              XmNheight, 50,
              NULL );


    XtRealizeWidget ( shell );
    XtAppMainLoop ( app );

}
于 2019-02-13T16:30:53.760 回答