C# Win32+;WPF具有系统菜单的可调整大小的无边框窗口
我在WPF中有一个(NoResize Borderless)窗口,我正在尝试使其具有相当大的规模,但仍然可以使用系统菜单。 我已经手动进行了NC hittesting,以启用大小调整和系统菜单。然而,我一次只能让一个人工作。我尝试使用SetWindowLong(Ptr)启用这两种功能,但无法获得任何组合来启用系统菜单和调整大小。 我已经尝试过启用C# Win32+;WPF具有系统菜单的可调整大小的无边框窗口,c#,wpf,winapi,C#,Wpf,Winapi,我在WPF中有一个(NoResize Borderless)窗口,我正在尝试使其具有相当大的规模,但仍然可以使用系统菜单。 我已经手动进行了NC hittesting,以启用大小调整和系统菜单。然而,我一次只能让一个人工作。我尝试使用SetWindowLong(Ptr)启用这两种功能,但无法获得任何组合来启用系统菜单和调整大小。 我已经尝试过启用WS\u SYSMENU样式,这没有什么区别 PostMessage(callingWindow, WindowMessage.SystemComman
WS\u SYSMENU
样式,这没有什么区别
PostMessage(callingWindow, WindowMessage.SystemCommand, new IntPtr(trackPMenu), IntPtr.Zero);
仅当窗口无法调整大小时才起作用。另外,将窗口设置为重叠窗口(
WS\u OVERLAPPEDWINDOW
)会在窗口周围放置一个框架。OSS项目能够使用系统菜单创建一个不可调整大小的无边框窗口。看一看那边的MetroWindow教室
我目前正在使用一个带有系统菜单的可调整大小的无边框窗口:
代码隐藏:
using MahApps.Metro.Controls;
public partial class MainWindow : MetroWindow
{
public MainWindow()
{
InitializeComponent();
}
}
XAML:
使用以下样式:
<Style x:Key="MyCleanWindowStyleKey"
TargetType="{x:Type c:MetroWindow}">
<Setter Property="BorderThickness"
Value="2" />
<Setter Property="BorderBrush"
Value="Blue" />
<Setter Property="Background"
Value="Black" />
<Setter Property="Foreground"
Value="White" />
<Setter Property="TitleForeground"
Value="White" />
<Setter Property="TitlebarHeight"
Value="42" />
<Setter Property="WindowState"
Value="Normal" />
<Setter Property="ResizeMode"
Value="CanResizeWithGrip" />
<Setter Property="AllowsTransparency"
Value="False" />
<Setter Property="TitleCaps"
Value="False" />
<Setter Property="ShowWindowCommandsOnTop"
Value="False" />
<Setter Property="WindowTransitionsEnabled"
Value="False" />
</Style>
Hmm,看看它的源代码,它似乎通过本机互操作(包括创建)完成了大部分窗口工作,这对你来说是个问题吗?不,只是好奇它是如何完成的
<Style x:Key="MyCleanWindowStyleKey"
TargetType="{x:Type c:MetroWindow}">
<Setter Property="BorderThickness"
Value="2" />
<Setter Property="BorderBrush"
Value="Blue" />
<Setter Property="Background"
Value="Black" />
<Setter Property="Foreground"
Value="White" />
<Setter Property="TitleForeground"
Value="White" />
<Setter Property="TitlebarHeight"
Value="42" />
<Setter Property="WindowState"
Value="Normal" />
<Setter Property="ResizeMode"
Value="CanResizeWithGrip" />
<Setter Property="AllowsTransparency"
Value="False" />
<Setter Property="TitleCaps"
Value="False" />
<Setter Property="ShowWindowCommandsOnTop"
Value="False" />
<Setter Property="WindowTransitionsEnabled"
Value="False" />
</Style>