首页 > 代码库 > Winform 拦截最小化、最大化、关闭事件【整理】

Winform 拦截最小化、最大化、关闭事件【整理】

 1 const int WM_SYSCOMMAND = 0x112; 2 //窗体关闭消息 3 const int SC_CLOSE = 0xf060; 4 //窗体最小化消息 5 const int SC_MINIMIZE = 0xf020; 6 //窗体最大化消息 7 const int SC_MAXIMIZE = 0xf030; 8 //窗体还原消息 9 const int SC_NOMAL = 0xf120;10 //窗体还原消息11 const int SC_RESTORE = 61728;12 13 //窗体按钮的拦截函数14 protected override void WndProc(ref Message m)15 {16 17 if (m.Msg == WM_SYSCOMMAND)18 {19 //If m.WParam.ToInt32() = SC_RESTORE Then20 // ‘拦截还原按钮21 // Exit Sub22 //End If23 24 if (m.WParam.ToInt32() == SC_NOMAL)25 {26 //拦截还原按钮27 28 return;29 }30 //if (m.WParam.ToInt32() == SC_MINIMIZE)31 //{32 // //拦截最小化按钮33 // //这里写操作代码34 35 // return;36 //}37 if (m.WParam.ToInt32() == SC_MAXIMIZE)38 {39 //拦截窗体最大化按钮40 //.....................41 42 return;43 }44 45 46 //窗体关闭消息47 if (m.WParam.ToInt32() == SC_CLOSE)48 {49 if (MessageBox.Show("您确认要退出吗?", "", MessageBoxButtons.OKCancel) == DialogResult.OK)50 {51 System.Environment.Exit(System.Environment.ExitCode);52 }53 else54 {55 return;56 }57 58 }59 }60 base.WndProc(ref m);61 62 }63 64 65 }

VB

 1  Const WM_SYSCOMMAND As Integer = &H112 2     Const SC_CLOSE As Integer = &HF060 窗体关闭消息 3     Const SC_MINIMIZE As Integer = &HF020 窗体最小化消息 4     Const SC_MAXIMIZE As Integer = &HF030 窗体最大化消息 5     Const SC_NOMAL As Integer = &HF120 窗体还原消息 6     Const SC_RESTORE As Integer = 61728 窗体还原消息 7     8     窗体按钮的拦截函数 9     Protected Overrides Sub WndProc(ByRef m As Message)10 11             If m.Msg = WM_SYSCOMMAND Then12                 If m.WParam.ToInt32() = SC_RESTORE Then13                     ‘拦截还原按钮14                     Exit Sub15                 End If16 17                 If m.WParam.ToInt32() = SC_NOMAL Then18                     拦截还原按钮19 20                     Exit Sub21                 End If22                 If m.WParam.ToInt32() = SC_MINIMIZE Then23                     拦截最小化按钮24                     这里写操作代码25 26                     Exit Sub27                 End If28                 If m.WParam.ToInt32() = SC_MAXIMIZE Then29                     拦截窗体最大化按钮30                     .....................31 32                     Exit Sub33                 End If34                 拦截双击标题栏、移动窗体的系统消息35                 If m.Msg <> &HA3 AndAlso m.Msg <> &H3 AndAlso m.WParam <> &HF012 Then36                     MyBase.WndProc(m)37                 End If38 39                 If m.WParam.ToInt32() = SC_CLOSE Then40 41                     Exit Sub42 43                 End If44             End If45             MyBase.WndProc(m)46    47     End Sub
View Code

最小化、最大化、关闭按钮不显示

this.ControlBox = false;   // 设置不出现关闭按钮

 

Winform 拦截最小化、最大化、关闭事件【整理】