我正努力做一個簡單的接收WM_DISPLAYCHANGE
通知我的Win32::GUI應用程序,Windows屏幕分辨率已經改變,因爲這個問題的結果是「0」相應地通過搜索引擎通知。如何使用Win32 :: GUI和WM_DISPLAYCHANGE檢測窗口大小調整事件?
您能否提供一個簡單的Win32::GUI
程序檢測WM_DISPLAYCHANGE
消息並打印一些關於分辨率變化的信息?
我正努力做一個簡單的接收WM_DISPLAYCHANGE
通知我的Win32::GUI應用程序,Windows屏幕分辨率已經改變,因爲這個問題的結果是「0」相應地通過搜索引擎通知。如何使用Win32 :: GUI和WM_DISPLAYCHANGE檢測窗口大小調整事件?
您能否提供一個簡單的Win32::GUI
程序檢測WM_DISPLAYCHANGE
消息並打印一些關於分辨率變化的信息?
從用戶 「山毛櫸」 在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"; }
爲您的窗口命名。我們稱之爲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。
這並沒有解決這個問題。編輯問題時請注意不要問一個問題。問題是(是)詢問是否收到[WM_DISPLAYCHANGE](https://msdn.microsoft.com/en-us/library/dd145210.aspx)消息。 – IInspectable
嗨Chankey,謝謝你對這件事的興趣。 WM_DISPLAYCHANGE是Windows通過系統發送的消息,用於通知屏幕分辨率的變化。例如:將屏幕分辨率從1024x768更改爲800x600,然後發送WM_DISPLAYCHANGE。我正在嘗試檢測Win32 :: GUI perl應用程序內部。 – LocusSolus
很酷。您可以將自己的答案標記爲已接受並結束問題。 –
引用時,最好提供一個適當的歸因參考。否則,它會看起來像抄襲。 – IInspectable
對不起,URL沒有'showup,讓我解決這個問題。 – LocusSolus