在一个典型的windows应用程序中,当一个模式对话框出现,我们在它的边界之外点击时,它会闪烁,从而表明任何超出这些边界的东西都是暂时被禁止的。
当这种情况发生时,是否有任何事件会触发?我真的需要这个效果,这样我就可以在我的WPF伪模式窗口中模拟这个行为。
谢谢。哈里什
发布于 2011-06-01 15:36:02
看看这个SO问题和答案:Prevent WebBrowser control from stealing focus?
它解释了FlashWindow在后台执行的操作。我引用你感兴趣的东西:
微软没有用太多的文字来解释FlashWindow是做什么的。不幸的是,它不会发送特定的消息(比如WM_FLASH或类似的消息),这将使捕获和取消此行为变得更容易。相反,FlashWindow做了三件事:
它为闪烁间隔设置系统计时器它为第一次闪存发送WM_NCACTIVATE消息当计时器到期时发送WM_NCACTIVATE消息(在接收WM_SYSTIMER时)
因此,您必须找到您感兴趣的窗口,并尝试在宿主窗口过程中捕获WM_SYSTIMER。这是一条(非常旧的)未记录的Windows消息。值为0x118。您还可以捕获WM_NCACTIVATE,这可能更容易,因为它由.NET事件(激活、停用等)表示。
https://stackoverflow.com/questions/6197404
复制相似问题