模态窗口闪烁效果

时间:2011-06-01 06:59:53

标签: .net window click modal-dialog

在一个典型的Windows应用程序中,当一个模态对话框出现并且我们点击它的边界之外时,它会闪烁,从而表示现在禁止在这些边界之外的任何东西。

发生这种情况时是否会发生任何事件?我真的需要这个效果,以便我可以为我的WPF伪模态窗口模拟这种行为。

THX。 哈里什

1 个答案:

答案 0 :(得分:1)

请参阅此SO问题和答案:Prevent WebBrowser control from stealing focus?

它解释了FlashWindow在后台做了什么。我引用了你感兴趣的内容:

  

微软没有解释这么多   单词FlashWindow做什么。   不幸的是,它没有发送   特定的消息(比如WM_FLASH或   类似的),这将成功   更容易捕获和取消此   行为。相反,FlashWindow确实如此   三件事:

     

它设置了系统计时器   闪烁间隔发送一个   第一个WM_NCACTIVATE消息   flash它发送WM_NCACTIVATE消息   当计时器到期时(接收时)   WM_SYSTIMER)

因此,您必须找到您感兴趣的窗口,并尝试在托管窗口过程中捕获WM_SYSTIMER。这是一个(非常古老的)未记录的Windows消息。值为0x118。您还可以捕获WM_NCACTIVATE,这可能更容易,因为它由.NET事件(激活,停用等等)表示