Пользовательское окно минимизирует анимацию - PullRequest
1 голос
/ 08 августа 2011

Я занимаюсь разработкой панели задач для экрана секунд и не могу заставить эту вещь работать ..

Когда я сверну приложение на экране секунд, оно покажет анимацию минимизации на главном экране (вид& 7 аэро).То, что я пытаюсь сделать, это показать анимацию на моей собственной панели задач на экране секунд.Я знаю, что это возможно, потому что Displayfusion и Acual Multi Monitor также имеют эту функцию.Поэтому после небольшого исследования я обнаружил, что вы можете установить позицию минимизации с помощью API SetWindowPlacement.Однако я не могу заставить это работать.В окне по-прежнему будет отображаться анимация минимизации на главном экране.

Это то, что я пробовал до сих пор: сначала скрыть кнопку панели задач в окне, которое находится на втором экране, с помощью метода 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);
            }                 
        }
...