【发布时间】:2019-04-14 16:43:21
【问题描述】:
我写了一个WndProc 来了解当前窗口是否在闪烁。如下:
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
var retVal = IntPtr.Zero;
switch (msg)
{
case (int)WindowsMessages.NCACTIVATE:
retVal = WindowsNative.DefWindowProc(hwnd, WindowsMessages.NCACTIVATE, new IntPtr(1), new IntPtr(-1));
IsFlashing = (int)wParam == 0;
break;
}
return retVal;
}
现在这可以与任何Window 完美配合,除非他们的SizeToContent 属性设置为Height(我还没有测试过WidthAndHeight,但我认为它也不起作用);在这种情况下,WM_NCACTIVATE 消息根本不会发送到Window。我所有的窗口都使用自定义外观(使用 WPF WindowChrome)。您可能知道原因或可以帮助我解决这个问题吗?
【问题讨论】:
-
不知道你有没有注意到MSDN中提示
SizeToContent,当窗口托管在浏览器中时,你无法设置或获取该属性。 -
@StriveSun-MSFT:托管在浏览器中?我不是指浏览器 Chrome,我指的是 WPF WindowChrome。
标签: c# wpf winapi windows-messages