在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 中实现类似的行为
有一个GTK_WINDOW_TOPLEVEL
和GTK_WINDOW_POPUP
- 除非你知道你使用第一个做什么。还有RTM https://developer.gnome.org/gtk3/stable/gtk3-Standard-Enumerations.html#GtkWindowType
您需要创建一个GtkWindow
或GtkMainWindow
,然后通过gtk_container_add
将所需的小部件x
添加到您创建的窗口中。