我正试图隐藏窗口顶部的最小化,最大化和关闭按钮,仍然显示我的图标。
我尝试过几种不同的东西,但无法保留图标。这是我正在使用的代码:
private const int GWL_STYLE = -16;
private const int WS_SYSMENU = 0x00080000;
[DllImport("user32.dll")]
private extern static int SetWindowLong(IntPtr hwnd, int index, int value);
[DllImport("user32.dll")]
private extern static int GetWindowLong(IntPtr hwnd, int index);
public Window()
{
SourceInitialized += MainWindow_SourceInitialized;
InitializeComponent();
Uri iconUri = new Uri("pack://application:,,,/Icon1.ico", UriKind.RelativeOrAbsolute);
this.Icon = BitmapFrame.Create(iconUri);
}
void MainWindow_SourceInitialized(object sender, EventArgs e)
{
WindowInteropHelper wih = new WindowInteropHelper(this);
int style = GetWindowLong(wih.Handle, GWL_STYLE);
SetWindowLong(wih.Handle, GWL_STYLE, style & ~WS_SYSMENU);
}
任何帮助将不胜感激! 谢谢!
答案 0 :(得分:1)
您可以将WindowStyle
中WPF window
的{{1}}属性设置为无。
即
XAML
使用代码可以执行以下操作: -
WindowStyle="None"
必须隐藏所有三个按钮。
答案 1 :(得分:0)
请注意,在创建窗口后无法更改某些窗口样式,但我不知道这是否适用于这些标志...据我所知,如果您的标题栏是由系统绘制的,那么您要么同时使用图标和关闭按钮或没有关闭按钮,因为它们都由WS_SYSMENU
窗口样式控制。
答案 2 :(得分:0)
在“表单”属性中,例如在WPF应用程序中,您只能隐藏最小化和mazimize按钮。
有一个名为 ResizeMode 的属性,如果您使用 NoResize ,则会隐藏此两个按钮。 ;)
答案 3 :(得分:0)
这是我用来启用和禁用winforms中关闭按钮的代码。我意识到这与你想要的3种不同 1)它只处理关闭按钮(虽然,如果奥斯卡是正确的,它是你唯一需要担心的) 2)它不会隐藏它,它只是禁用/灰色(虽然你可以改变一个参数来完全隐藏它) 3)它适用于winforms,而不是wpf
尽管存在这些差异,但是查看代码可能会帮助您找出遗漏的内容。如果你确定了,我会对你发布你的解决方案感兴趣:)
#region Enable / Disable Close Button
[DllImport("user32.dll", CharSet=CharSet.Auto)]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
private static extern bool EnableMenuItem(IntPtr hMenu, uint uIDEnableItem, uint uEnable);
private const int SC_CLOSE = 0xF060;
private const int MF_BYCOMMAND = 0x0000;
private const int MF_ENABLED = 0x0000;
private const int MF_GRAYED = 0x0001;
protected void DisableCloseButton()
{
try
{
EnableMenuItem(GetSystemMenu(this.Handle, false), SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);
this.CloseButtonIsDisabled = true;
}
catch{}
}
protected void EnableCloseButton()
{
try
{
EnableMenuItem(GetSystemMenu(this.Handle, false), SC_CLOSE, MF_BYCOMMAND | MF_ENABLED);
this.CloseButtonIsDisabled = false;
}
catch{}
}
protected override void OnSizeChanged(EventArgs e)
{
if (this.CloseButtonIsDisabled)
this.DisableCloseButton();
base.OnSizeChanged(e);
}
#endregion