gpt4 book ai didi

c# - 最小化/恢复窗口时是否可以禁用动画?

转载 作者:行者123 更新时间:2023-11-30 15:11:38 26 4
gpt4 key购买 nike

当我在我的 Windows 窗体应用程序中单击最小化按钮时,我不希望它执行经典的 Windows 最小化动画(窗口下降到任务栏)。

据我所知,没有最小化事件,我只能使用调整大小,但我不知道如何检测我是否单击了最小化按钮。我尝试使用 if ( WindowState = FormWindowState.Minimized ) { ... },但无论如何都会执行动画并在之后触发代码。

有什么方法可以检测最小化按钮的点击吗?有没有什么方法可以禁用动画或者是由 Windows 设置触发的?

最佳答案

这可行,但它对任务栏按钮有令人不快的副作用。我想不出其他方法,甚至无法从 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);
}
}

更新:通过使用 DWMWA_TRANSITIONS_FORCEDISABLED 属性调用 DwmSetWindowAttribute() 可以禁用 Aero 上的动画。参见 this answer .

关于c# - 最小化/恢复窗口时是否可以禁用动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2185721/

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