在一个典型的Windows应用程序中,当一个模态对话框出现并且我们点击它的边界之外时,它会闪烁,从而表示现在禁止在这些边界之外的任何东西。
发生这种情况时是否会发生任何事件?我真的需要这个效果,以便我可以为我的WPF伪模态窗口模拟这种行为。
THX。 哈里什
答案 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事件(激活,停用等等)表示