2009-02-03 4 views

답변

2

당신이 운이있는 유닉스 환경에있는 경우. "닫기"버튼은 바탕 화면의 Window Manager에 의해 관리되며 사용자가 제어 할 수없는 완전히 다른 프로세스입니다.

해킹으로 "닫기"버튼을 비활성화해도 사용자가 언제든지 창 관리자가 허용하는 경우 을 다시 가져올 수 있습니다. 계몽 창 관리자는 예를 들어 요청시 모든 창 버튼을 활성화/비활성화 할 수 있습니다.

링크에서 제공하는 기술은 정확하게 이것을 수행합니다. "닫기"버튼 을 제거하지 않습니다. 창 관리자 (WM_DELETE_WINDOW)에 힌트이 제공됩니다. 이 힌트가 승인 될지 여부는 창 관리자가 결정합니다.

icccmNetWM 페이지를 참조하십시오.

원하는 항목은 일 수 있습니다. Windows에서는이 가능하지만이 OS에 대한 경험이 제한되어 있으므로 다른 포스터가이를 알 수 있습니다.

+0

고맙지 만 Windows를 사용하고 있습니다. – splintor

+0

필자는 Windows에서조차도 perl/TK가 크로스 플랫폼 (최소 공통 분모)이기 때문에 사용자가 원하는 것을하기 위해 심각한 해킹이 필요하다고 생각합니다. – kazanaki

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'다음 실행 자신의 서브 루틴을 쓸 수는 버튼을 누를 때 때 . 'WM_DELETE_WINDOW' => sub {}

0

당신이 정말로이 가까이하지 않도록 에 관리하지 않는 경우 : 당신이 닫기 아이콘을 사용하지 하려면

는 (효율적 "누르면 아무것도하지 않고"그것을 말하는) 비우 sub 설정 버튼 (회색으로 표시하거나 심지어는 창 장식에서 제거하는 것을 의미 함)을 사용하면 창을 닫지 않고 아이콘 화하는 것이 가장 직관적 인 방법 일 수 있습니다. 이것이 내가 한 일이다.

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