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

问题描述 投票:0回答:1

在 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 中实现类似的行为?

winapi user-interface gtk cross-platform porting
1个回答
1
投票
有一个

GTK_WINDOW_TOPLEVEL

GTK_WINDOW_POPUP
 - 除非你知道你要使用第一个。还有 RTM 
标准枚举:来自 Wayback Machine (archive.org) 的 GTK+ 3 参考手册


您需要创建一个

GtkWindow

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

© www.soinside.com 2019 - 2024. All rights reserved.