2009-02-03 109 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(); });

相关问题