Можно ли отключить анимацию при сворачивании / восстановлении окна? - PullRequest
3 голосов
/ 02 февраля 2010

Когда я нажимаю кнопку минимизации в приложении Windows Forms, я не хочу, чтобы она выполняла классическую анимацию минимизации Windows (окно опускается до панели задач).

Насколько я знаю, события Minimize нет, я могу просто использовать Resize, но понятия не имею, как определить, нажал ли я кнопку свертывания. Я пытался использовать if ( WindowState = FormWindowState.Minimized ) { ... }, но это все равно делает анимацию и запускает код после.

Есть ли способ обнаружить минимизацию нажатия кнопки? Есть ли способ отключить анимацию или это вызвано настройками Windows?

1 Ответ

5 голосов
/ 02 февраля 2010

Это работает, но у него есть неприятный побочный эффект на кнопке панели задач. Я не могу придумать другого пути, анимация даже не доступна из SystemParametersInfo ().

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
    }
    protected override void WndProc(ref Message m) {
        // Catch WM_SYSCOMMAND, SC_MINIMIZE
        if (m.Msg == 0x112 && m.WParam.ToInt32() == 0xf020) {
            this.Hide();
            this.WindowState = FormWindowState.Minimized;
            this.BeginInvoke(new Action(() => this.Show()));
            return;
        }
        base.WndProc(ref m);
    }
}

Обновление: отключить анимацию в Aero можно, введя DwmSetWindowAttribute () с атрибутом DWMWA_TRANSITIONS_FORCEDISABLED См. этот ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...