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

时间:2016-09-15 06:36:29

标签: perl winapi win32gui

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

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

2 个答案:

答案 0 :(得分: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";
}

答案 1 :(得分: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