【发布时间】:2011-09-06 01:06:08
【问题描述】:
在典型的 Windows 应用程序中,当出现模态对话框并且我们在其边界之外单击时,它会闪烁,因此表示暂时禁止在这些边界之外进行任何操作。
发生这种情况时是否会触发任何事件?我真的需要这种效果,以便我可以为我的 WPF 伪模式窗口模拟这种行为。
谢谢。 哈里什
【问题讨论】:
标签: .net window click modal-dialog
在典型的 Windows 应用程序中,当出现模态对话框并且我们在其边界之外单击时,它会闪烁,因此表示暂时禁止在这些边界之外进行任何操作。
发生这种情况时是否会触发任何事件?我真的需要这种效果,以便我可以为我的 WPF 伪模式窗口模拟这种行为。
谢谢。 哈里什
【问题讨论】:
标签: .net window click modal-dialog
查看这个 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 事件(激活、停用等)表示。
【讨论】: