2009-02-03 213 views

回答

2

如果你是在Unix環境中,你的運氣了。 「關閉」按鈕由桌面的Window Manager管理,這是一個完全不同的過程,您無法控制。

即使通過黑客你禁用「關閉」按鈕,用戶可以隨時把它帶回 如果窗口管理器允許這樣做。例如,啓蒙窗口管理器可以根據需要啓用/禁用所有窗口按鈕。

你在鏈接中給出的技術就是這樣做的。它不會刪除 「關閉」按鈕。它只是向窗口管理器(WM_DELETE_WINDOW)提供提示如果這個提示將被授予或否,這取決於窗口管理器。

另請參閱icccmNetWM頁面。

你想要什麼可能在Windows上是可能的,但我在此係統中 經驗有限,因此也許另一個海報就知道這一點。

+0

謝謝,但我在Windows上。 – splintor 2009-02-05 21:05:07

2

我有一個應用程序,我寫的,我想知道同樣的事情,我不disableit,但我有一個回調到子程序,還是隻是因爲return;

$Mw->protocol('WM_DELETE_WINDOW',sub{return;}); 
0

根據the Perl Monks,它看起來像在Windows以下工作:

#!/usr/bin/perl 
use warnings; 
use strict; 
use Tk; 

my $window = new MainWindow; 
$window ->title("Close test"); 
$window ->geometry("400x250"); 

#prevents window from closing 
$window->protocol('WM_DELETE_WINDOW' => sub { 
         print "Do stuff before exiting\n"; 
         exit; 
        }); 

MainLoop; 

在上面的代碼,你攔截髮送的信號時,當按下按鈕,用戶按下「X」,然後可以編寫自己的子程序執行。

如果你想關閉的關閉圖標,設置sub空(有效地告訴它「按下時什麼都不做」):'WM_DELETE_WINDOW' => sub {}

0

如果不設法真正禁用關閉按鈕(我的意思是將它變灰,甚至將其從窗飾中移除),它可能是最直觀的圖標化窗口而不是關閉窗口。這就是我所做的。

$window->protocol('WM_DELETE_WINDOW', sub { $window->iconify(); });

相關問題