簡體   English   中英

xlib阻止關閉按鈕退出應用程序

[英]xlib prevent close button to exit the application

有沒有辦法通過單擊關閉按鈕來防止應用程序退出? 以下代碼僅隱藏最小化和最大化按鈕,而不隱藏關閉按鈕...

 Atom window_type = XInternAtom(display, "_NET_WM_WINDOW_TYPE", False); long value = XInternAtom(display, "_NET_WM_WINDOW_TYPE_TOOLBAR", False); XChangeProperty(display, window, window_type, XA_ATOM, 32, PropModeReplace, (unsigned char *) &value,1 ); 

我試圖通過Google搜索有關覆蓋_NET_CLOSE_WINDOW的信息,但實際上找不到一個...或一種從xprop刪除_NET_WM_ACTION_CLOSE的方法...

閱讀ICCCMEWMH 您可能需要幾個月(或幾年)來了解所有細節(以及與X11X協議和體系結構的關系)。

從理論上講,您可以在原始Xlib中執行所需的操作。 但是細節是如此復雜,以至於您確實應該使用一些工具包,例如QtGTK (壽命很短),或者也許是libSDLSFML 另請參閱列表。

在協議和Xlib級別上掌握X11需要很多時間(相關文檔有成千上萬的頁面)。 您確定要花錢嗎?

因此,在原始X11級別進行編碼就像在匯編器中進行編碼。 出於類似的原因(當今的抽象水平太低;沒有太多細節需要關注...),今天沒有人為真正的程序這樣做。

請注意,當前的趨勢是用Wayland替換X。 您可能需要幾年的時間才能在X11中從頭開始開發您的產品,而到成功時,X就會過時了。 BTW Qt和GTK的最新版本了解Wayland(因此相同的代碼可以在X11和Wayland上運行)。

因此,請使用一些GUI工具箱 它們是數以百萬計的行的龐然大物軟件,其復雜性是有原因的(此外, 圖形卡是當今非常復雜的硬件;另請參閱thisthis )。 他們使您能夠禁用關閉窗口(因為他們知道所有ICCCM和EWMH詳細信息)。

由於您使用C ++標記了問題,因此強烈建議您使用Qt(或SFML)。 Qt文檔非常出色。

順便說一句,您不清楚的問題看起來很奇怪(並且缺乏動力和背景)。 似乎您錯誤地認為您的應用程序是屏幕上唯一的應用程序,這違背了每個窗口系統本質上是多任務和多窗口,因此是多應用程序)的哲學。 您應該將您的應用程序視為與其他應用程序一起使用(例如,對於復制和粘貼 ,如果不考慮多個應用程序和多個窗口,這是毫無意義的)。 而且,高級用戶可以始終 “終止”您的應用程序(例如,使用kill(1)xkill )。 您可能希望改為通知窗口關閉(例如,在發生這種情況時顯示一些對話框)。 您甚至不應該設計一個無法關閉的應用程序(這違反所有編碼和接口准則)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM