如果我按下Win + D,则StateChanged事件不会触发,但如果ResizeMode是CanResize,则会触发StateChanged事件。
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" WindowStyle="None" ResizeMode="NoResize" WindowState="Maximized">
<Grid>
</Grid>
如果我挂钩消息循环并进行调试,我永远不会使用&#34; NoResize&#34;
进入Win + DIntPtr mainWindowPtr = new WindowInteropHelper(sender as Window).Handle;
HwndSource mainWindowSrc = HwndSource.FromHwnd(mainWindowPtr);
mainWindowSrc.AddHook(Hook);
但如果我使用Microsoft Spy ++进行间谍活动,Win + D上会有一条WM_WINDOWPOSCHANGED消息
有什么问题?我怎样才能抓住这个消息/事件?
答案 0 :(得分:1)
当您按 Windows + D 时,您的应用程序Window
不正在调整大小,因此没有理由{ {1}}要触发的事件。您可以通过运行应用程序并按 ALT + Space 来查看StateChanged
状态选项来验证这一点。您会注意到最大化,最小化和还原的选项是灰色的,这意味着它们无法被选中。
这是因为您已将Window
属性设置为ResizeMode
,并解释了为什么在设置为NoResize
时会得到不同的结果。因此,无论操作系统在按下 Windows + D 时隐藏CanResize
的操作,都不会涉及调整它们的大小。
答案 1 :(得分:0)
得到同样的情况。
$res = DB::query()
->from(DB::raw('(SELECT *, (select count(*) from `comments` where parent_id=b._id) as cnt FROM `comments` b) x'));
为Window.ResizeMode
,我正在尝试NoResize
,然后Show()
Hide()
窗口进行编程。
即使我更改了代码中的Minimized
属性,事件也未在WindowState
上触发(但已在Hide()
btw上触发。)
在我的情况下,我自己解雇了它,它适用于我。
Show()