通常,当您打开模态对话框并尝试单击其父窗口时,模态对话框的标题栏会闪烁。当在 WPF 中创建一个自定义的、无边框的、无边框的窗口时,您将失去所有这些功能并且必须自己重建它。我看了高处和低处,在我的生活中无法弄清楚如何让我的模态窗口闪烁。虽然它仍然发出哔哔声......
我想我将不得不在 WndProc 中观察一些我必须处理的事件,但我不知道是哪个事件或如何处理。我试过观察窗口更改和窗口更改事件以及 WM_ACTIVATE 事件无济于事。我确定我只是遗漏了一些简单的东西,但我将不胜感激。谢谢!
最佳答案
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
var retVal = IntPtr.Zero;
switch (msg)
{
case UnsafeNativeConstants.WM_NCACTIVATE:
retVal = UnsafeNativeMethods.DefWindowProc(hwnd, UnsafeNativeConstants.WM_NCACTIVATE, new IntPtr(1), new IntPtr(-1));
AssociatedObject.UpdateTitlebar((int)wParam == 1 ? true : false);
handled = true;
break;
}
return retVal;
}
我已连接到附加到我的窗口的自定义行为中的 WndProc。它在我的窗口上调用一个内部方法,该方法将适本地更新标题栏的颜色。
感谢@Hans Passant 为我指明了正确的方向。
关于c# - WPF:如何使自定义模式对话框闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27158317/