c# - WPF:使窗口不可调整大小,但保留框架?

标签 c# wpf windows aero window-resize

我有一个没有标题栏的窗口 (WindowStyle == WindowStyle.None)。整个窗口使用了Aero玻璃效果。当我使窗口不可调整大小 (ResizeMode == ResizeMode.NoResize) 时,玻璃效果消失,我的控件只是悬在半空中。 (本质上,窗口本身消失但保留其内容。)

有没有办法让我在不去掉窗框的情况下使窗口无法调整大小?


我已阅读问题 Enable Vista glass effect on a borderless WPF window ,但这并不是我想要的——我想保留窗口边框。有关我希望我的窗口看起来像什么的示例,请在启用 Aero 的情况下按 Alt+Tab。


澄清一下,当悬停在窗口边框上时,我根本不想显示调整大小的光标。这基本上就是我希望我的窗口看起来像的样子:

Projector

解决方案不必是严格的 WPF——为了实现这一点,我可以随意使用 Win32 API。

最佳答案

您可以 Hook wndproc 并拦截 WM_WINDOWPOSCHANGING 消息。不是严格意义上的 WPF,但可能是您最好的选择。

如果你想隐藏调整大小的游标,那么最好的办法是拦截 WM_NCHITTEST 。调用 DefWindowProc(获取默认行为),并测试返回值;如果是 HTBOTTOM、HTBOTTOMLEFT、HTBOTTOMRIGHT、HTTOP、HTTOPLEFT 或 HTTOPRIGHT,将返回值更改为 HTBORDER。

关于c# - WPF:使窗口不可调整大小,但保留框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3386486/

相关文章:

wpf - 列表框中的滚动条不起作用

wpf - Windows 8 Live Tile 图标背景颜色

c++ - 关于windows iocp的一个问题

c# - 自定义 DataTemplate - 控件不占用完整的网格列宽

c# - 使用 JSON .NET 查询 JSON

c# - Partcover 和 Typemock 集成

c# - 如何插入一个没有边框、带有背景图片和文本的按钮

javascript - 如何将 asp.net 3.5 文本框输入到 JavaScript 中?

c - Windows 中是否有一种机制类似于 Linux 中的消息队列?

c# - 如何使用 PutObjectAsync 通过 dotnet SDK 将 base64 pdf 上传到 S3