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