gpt4 book ai didi

c# - WPF 在任务栏上最小化单击

转载 作者:太空狗 更新时间:2023-10-29 17:37:15 25 4
gpt4 key购买 nike

我有一个 WPF 应用程序,利益相关者要求它必须具有 WindowStyle="None"、ResizeMode="NoResize"和 AllowTransparency="True"。我知道如果不使用 Windows chrome,您必须重新实现许多操作系统窗口处理功能。我能够创建一个有效的自定义最小化按钮,但是我无法重新实现当您单击屏幕底部的任务栏图标时 Windows 最小化应用程序的功能。

用户要求应用程序应在任务栏图标点击时最小化并在再次点击时恢复。后者从未停止工作,但我无法实现前者。这是我正在使用的代码:

    public ShellView(ShellViewModel viewModel)
{
InitializeComponent();

// Set the ViewModel as this View's data context.
this.DataContext = viewModel;

this.Loaded += new RoutedEventHandler(ShellView_Loaded);
}

private void ShellView_Loaded(object sender, RoutedEventArgs e)
{
var m_hWnd = new WindowInteropHelper(this).Handle;
HwndSource.FromHwnd(m_hWnd).AddHook(WindowProc);
}

private IntPtr WindowProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == NativeMethods.CS_DBLCLKS)
{
this.WindowState = WindowState.Minimized;
// handled = true
}

return IntPtr.Zero;
}

/// <summary>
/// http://msdn.microsoft.com/en-us/library/ms646360(v=vs.85).aspx
/// </summary>
internal class NativeMethods
{
public const int SC_RESTORE = 0xF120;
public const int SC_MINIMIZE = 0xF020;
public const int SC_CLOSE = 0xF060;
public const int WM_SYSCOMMAND = 0x0112;
public const int WS_SYSMENU = 0x80000;
public const int WS_MINIMIZEBOX = 0x20000;
public const int CS_DBLCLKS = 0x8;
NativeMethods() { }
}

最佳答案

使用 ResizeMode="CanMinimize"。这将允许您最小化到任务栏。

关于c# - WPF 在任务栏上最小化单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6256392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com