Свернуть WPF на панели задач. Щелкните

У меня есть приложение 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() { }
    }
9
задан sidney.andrews 6 June 2011 в 18:53
поделиться