在Windows中,您有一个设置为“拖动时显示窗口内容”。 当这个closures时,你改为调整窗口的轮廓。
我的WPF应用程序有很多控件,所以resize非常缓慢。 有没有办法让我的应用程序resize只显示窗口大纲,而不是总是更新内容?
我发现这个问题关于WinForms,但不幸的是,我无法适应WPF。 我可以挂钩到HwndSource
,但在Windows 10中的消息号码可能已经改变,所以if
语句中的答案是从来没有input…或者可能有其他的东西在工作。
另外, if
在调用WndProc
base之后,又改变了一个系统参数,那么在调用完系统参数后重新设置系统参数。 但是调用该方法不是WPF中的选项,因为Window
对象无法转发消息。
public void OnViewLoaded() { HwndSource source = HwndSource.FromHwnd( new WindowInteropHelper(this).Handle); source?.AddHook(WndProc); } private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { if (msg == WM_SYSCOMMAND && (wParam.ToInt32() & 0xfff0) == SC_SIZE) { // This if is never entered int isDragFullWindow; GetSystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0, out isDragFullWindow, 0); if (isDragFullWindow != 0) SetSystemParametersInfo(SPI_SETDRAGFULLWINDOWS, 0, 0, 0); // How to call this? base.WndProc(ref m); if (isDragFullWindow != 0) SetSystemParametersInfo(SPI_SETDRAGFULLWINDOWS, 1, 0, 0); } }