如何使用 Win32::GUI 和 WM_DISPLAYCHANGE 检测 window 调整大小事件?

How can I detect window resize event using Win32::GUI and WM_DISPLAYCHANGE?

我正在努力做一个简单的接收 WM_DISPLAYCHANGE 通知我的 Win32::GUI 应用 Windows 屏幕分辨率已经改变,因为这个问题的结果相应地是“0”由搜索引擎通知。

您能否提供一个简单的 Win32::GUI 程序的简单工作示例,该程序检测 WM_DISPLAYCHANGE 消息并打印有关分辨率更改的一些信息?

为您的 window 命名。我们称它为 Main

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

现在,为 window 定义事件处理程序。它应该是以下模式:

<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

来自 PerlMonks 的用户 "beech":http://perlmonks.org/index.pl?node_id=1171819

Try using the Hook method:

something like

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