使任意小部件在X上的GTK中显示为顶级窗口

时间:2014-04-06 08:40:47

标签: winapi user-interface gtk cross-platform porting

在Windows中,可以说

CreateWindow("myclass",...,WS_CHILD,...);

CreateWindow("myclass",...,WS_OVERLAPPEDWINDOW,...);

也可以随意切换外观:

SetWindowLongPtr((HWND)handle,GWL_STYLE,style_1);
SetWindowPos((HWND)handle,HWND_TOP,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER |   SWP_FRAMECHANGED);
SetWindowLongPtr((HWND)handle,GWL_EXSTYLE,style_0);
SetWindowPos((HWND)handle,HWND_TOP,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
if(style_1&WS_CHILD)
    {
    HWND owner=GetWindow((HWND)handle,GW_OWNER);
    SetParent((HWND)handle,owner);
    }
else
    {SetParent((HWND)handle,NULL);}

在我看来,大多数其他GUI工具包清楚地区分顶级窗口和其他小部件。问题是是否以及如何在X上实现GTK中的类似行为

1 个答案:

答案 0 :(得分:1)

有一个GTK_WINDOW_TOPLEVELGTK_WINDOW_POPUP - 除非你知道你使用的是第一个。还有RTM https://developer.gnome.org/gtk3/stable/gtk3-Standard-Enumerations.html#GtkWindowType


您需要创建GtkWindowGtkMainWindow,然后通过x将所需的小部件gtk_container_add添加到您创建的窗口中。

相关问题