2016-09-15 384 views

回答

2

從用戶 「山毛櫸」 在PerlMonks:http://perlmonks.org/index.pl?node_id=1171819

嘗試使用Hook方法:

$main->Hook(WM_DISPLAYCHANGE(), \&onDisplayChange); 
sub onDisplayChange { 
    my($object, $wParam, $lParam, $type, $msgcode) = @_; 
    print "Click handler called!\n"; 
} 
+0

很酷。您可以將自己的答案標記爲已接受並結束問題。 –

+0

引用時,最好提供一個適當的歸因參考。否則,它會看起來像抄襲。 – IInspectable

+0

對不起,URL沒有'showup,讓我解決這個問題。 – LocusSolus

0

爲您的窗口命名。我們稱之爲Main

$main = Win32::GUI::Window->new(
       -name => 'Main', 
       -width => 100, 
       -height => 100, 
     ); 

現在,定義窗口的事件處理程序。它應該是以下模式:

<window name>_<event name> 

例如,對於Resize事件,事件處理程序應該是Main_Resize。

sub Main_Resize { 
    my $mw = $main->ScaleWidth(); 
    my $mh = $main->ScaleHeight(); 
    my $lw = $label->Width(); 
    my $lh = $label->Height(); 
    #print the height/width or whatever you want 
} 

我建議通過Win32::GUI::Tutorial

+0

這並沒有解決這個問題。編輯問題時請注意不要問一個問題。問題是(是)詢問是否收到[WM_DISPLAYCHANGE](https://msdn.microsoft.com/en-us/library/dd145210.aspx)消息。 – IInspectable

+0

嗨Chankey,謝謝你對這件事的興趣。 WM_DISPLAYCHANGE是Windows通過系統發送的消息,用於通知屏幕分辨率的變化。例如:將屏幕分辨率從1024x768更改爲800x600,然後發送WM_DISPLAYCHANGE。我正在嘗試檢測Win32 :: GUI perl應用程序內部。 – LocusSolus