FvwmButtons(fvwm窗口管理器的一個模塊)具有Swallow函數,它將應用程序的窗口嵌入到面板中。將應用程序嵌入窗口
我必須用Motif和Xlib做這樣的事情。我想將Xclock嵌入到我的應用程序中。我想我必須改變嵌入式應用的窗口ID。
我該怎麼做?
FvwmButtons(fvwm窗口管理器的一個模塊)具有Swallow函數,它將應用程序的窗口嵌入到面板中。將應用程序嵌入窗口
我必須用Motif和Xlib做這樣的事情。我想將Xclock嵌入到我的應用程序中。我想我必須改變嵌入式應用的窗口ID。
我該怎麼做?
唯一受支持和可靠的機制是XEmbed,但它需要嵌入式應用程序進行合作。沒有合作的應用程序,你處於一個可怕的黑客世界。
你需要做的最基本的事情是XReparentWindow(),但問題是你正在與窗口管理器打交道,這也將要重置窗口。您也可能會使應用程序混淆,該應用程序將期待ICCCM和EWMH行爲,並期望父窗口成爲WM框架。
真的很古老的GNOME 1.x版本的gnome面板有一個吞嚥功能,你可以嘗試從可能竊取黑客。
沒有相當廣泛的X知識,這將是痛苦的,甚至不可能使100%可靠。
有趣!謝謝! 'XReparentWindow()'是我想要的。現在我需要找到正確的窗口。我正在嘗試'XQueryTree()',但我不知道如何獲得特定的窗口。 – mghis 2011-03-23 17:43:54
得到一個特定的窗口,你可能想看看類提示(XGetClassHint)。您可以找到頂層窗口(與窗口管理器框架相反),因爲它們具有WM_STATE屬性。 – 2011-03-23 19:23:19