Как расположить главное окно приложения в MOTIF по центру экрана компьютера? - PullRequest
0 голосов
/ 12 февраля 2019

Как центрировать главное окно приложения виджета MOTIF по центру экрана компьютера?например виджет формы здесь.

Код готов и работает, но окно появляется в левой верхней части экрана.

#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.


1 Ответ

0 голосов
/ 13 февраля 2019

Получите высоту и ширину экрана и сделайте ваши настройки.Попробуйте следующее:

#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 );

}
...