自定义窗口最小化动画

时间:2011-08-08 10:10:24

标签: c# window aero minimize

我正在为秒屏幕开发一个任务栏,但无法使这个东西起作用..

当我在秒屏幕上最小化应用程序时,它将向主屏幕显示最小化动画(vista& 7 aero)。我想要做的是在秒屏幕上将动画显示到我自己的任务栏。我知道这是可能的,因为Displayfusion和Acual Multi Monitor也有此功能。因此,经过一些研究后,我发现您可以使用SetWindowPlacement API设置最小化位置。但是,我无法让这个工作。该窗口仍将显示主屏幕的最小化动画。

这是我到目前为止所尝试的:首先使用ITaskbarList DeleteTab方法隐藏第二个屏幕上窗口的任务栏按钮。然后我使用此函数来设置最小化位置并最小化窗口:

public void ShowHideAnimated(IntPtr Handle, Boolean show)
        {           
            WINDOWPLACEMENT wp = new WINDOWPLACEMENT(); 
            GetWindowPlacement(Handle, out wp);

            wp.length = Marshal.SizeOf(typeof(WINDOWPLACEMENT));

            wp.flags = WPF_SETMINPOSITION;
            wp.ptMinPosition.X = -500; //(-500,200) is a point on the second screen
            wp.ptMinPosition.Y = 200;

            if (!SetWindowPlacement(Handle, ref wp))
            {
                Debug.WriteLine( Marshal.GetLastWin32Error() );
            }

            if(!show)
            {            
                ShowWindowAsync(Handle, SW_MINIMIZE);
            }
            else
            {
                ShowWindowAsync(Handle, SW_RESTORE);
            }                 
        }

0 个答案:

没有答案
相关问题