2013-02-10 150 views

回答

1

XtCreateWindow有x和y坐标,因此您可以在创建时指定位置。请注意,X服务器在第一次映射之前不必知道窗口,因此移动未映射的窗口可能没有任何作用。

但是XtCreateWindow只适用于主窗口的子窗口;如果您想要放置顶层窗口(无论是主应用程序还是弹出式对话框),则必须与窗口管理器协商放置窗口。下面的代码片断执行此使用XT LIB对于主窗口:

Arg args[] = { 
    { XtNx, (dis_width - WIN_WIDTH)/2}, 
    { XtNy, (dis_height - WIN_HEIGHT)/2}, 
    { XtNwidth, WIN_WIDTH}, 
    { XtNheight, WIN_HEIGHT}, 
    { XtNborderWidth, 10}, 
    { "minWidth", WIN_WIDTH}, 
    { "minHeight", WIN_HEIGHT}, 
    { "maxWidth", WIN_WIDTH}, 
    { "maxHeight", WIN_HEIGHT}, 
    { "mwmDecorations", 0xA}, // border + title; see MWM_DECOR_ constants 
    { "mappedWhenManaged", False}, 
    }; 

    shell = XtAppCreateShell (_ ("Welcome"), NULL, applicationShellWidgetClass, Dis, args, XtNumber (args)); 

它创建为中心的屏幕上的窗口。

对于弹出窗口,请参阅XtCreatePopupShell,它使用带参数的相似数组。