WPF中自定义按钮实现最大化最小化动画过度效果
需要使用WindowsAPI
[DllImport("user32.dll", EntryPoint = "SetWindowLong")] private static extern int SetWindowLong32(HandleRef hWnd, int nIndex, int dwNewLong); [DllImport("user32.dll", EntryPoint = "SetWindowLongPtr")] private static extern IntPtr SetWindowLongPtr64(HandleRef hWnd, int nIndex, IntPtr dwNewLong); public IntPtr myHWND; public const int GWL_STYLE = -16; public static class WS { public static readonly long WS_BORDER = 0x00800000L, WS_CAPTION = 0x00C00000L, WS_CHILD = 0x40000000L, WS_CHILDWINDOW = 0x40000000L, WS_CLIPCHILDREN = 0x02000000L, WS_CLIPSIBLINGS = 0x04000000L, WS_DISABLED = 0x08000000L, WS_DLGFRAME = 0x00400000L, WS_GROUP = 0x00020000L, WS_HSCROLL = 0x00100000L, WS_ICONIC = 0x20000000L, WS_MAXIMIZE = 0x01000000L, WS_MAXIMIZEBOX = 0x00010000L, WS_MINIMIZE = 0x20000000L, WS_MINIMIZEBOX = 0x00020000L, WS_OVERLAPPED = 0x00000000L, WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, WS_POPUP = 0x80000000L, WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU, WS_SIZEBOX = 0x00040000L, WS_SYSMENU = 0x00080000L, WS_TABSTOP = 0x00010000L, WS_THICKFRAME = 0x00040000L, WS_TILED = 0x00000000L, WS_TILEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, WS_VISIBLE = 0x10000000L, WS_VSCROLL = 0x00200000L; } public IntPtr SetWindowLongPtr(HandleRef hWnd, int nIndex, IntPtr dwNewLong) { if (IntPtr.Size == 8) { return SetWindowLongPtr64(hWnd, nIndex, dwNewLong); } else { return new IntPtr(SetWindowLong32(hWnd, nIndex, dwNewLong.ToInt32())); } }
窗口Load事件中执行
myHWND = new WindowInteropHelper(this).Handle; IntPtr myStyle = new IntPtr(WS.WS_CAPTION | WS.WS_CLIPCHILDREN | WS.WS_MINIMIZEBOX | WS.WS_MAXIMIZEBOX | WS.WS_SYSMENU | WS.WS_SIZEBOX); SetWindowLongPtr(new HandleRef(null, myHWND), GWL_STYLE, myStyle);
正常调用最大化等方法就可以
this.WindowState = WindowState.Maximized; //SystemCommands.MaximizeWindow(this);
分类:
WinForm/WPF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App