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 Then
20 // ‘拦截还原按钮
21 // Exit Sub
22 //End If
23
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 else
54 {
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 Then
12                 ‘If m.WParam.ToInt32() = SC_RESTORE Then
13                 ‘    ‘拦截还原按钮
14                 ‘    Exit Sub
15                 ‘End If
16
17                 If m.WParam.ToInt32() = SC_NOMAL Then
18                     ‘拦截还原按钮
19
20                     Exit Sub
21                 End If
22                 If m.WParam.ToInt32() = SC_MINIMIZE Then
23                     ‘拦截最小化按钮
24                     ‘这里写操作代码
25
26                     Exit Sub
27                 End If
28                 If m.WParam.ToInt32() = SC_MAXIMIZE Then
29                     ‘拦截窗体最大化按钮
30                     ‘.....................
31
32                     Exit Sub
33                 End If
34                 ‘拦截双击标题栏、移动窗体的系统消息
35                 If m.Msg <> &HA3 AndAlso m.Msg <> &H3 AndAlso m.WParam <> &HF012 Then
36                     MyBase.WndProc(m)
37                 End If
38
39                 If m.WParam.ToInt32() = SC_CLOSE Then
40
41                     Exit Sub
42
43                 End If
44             End If
45             MyBase.WndProc(m)
46
47     End Sub

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

this.ControlBox = false;   // 设置不出现关闭按钮
时间: 2024-10-21 17:58:46

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

iPhone手机解锁效果&amp;&amp;自定义滚动条&amp;&amp;拖拽--Clone&amp;&amp;窗口拖拽(改变大小/最小化/最大化/还原/关闭)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

窗口拖拽(改变大小/最小化/最大化/还原/关闭)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

漂亮的Js拖动层,窗口拖拽(改变大小/最小化/最大化/还原/关闭)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

C#实现WinForm捕获最小化事件的方法

一般来说,虽然Form类没有提供Minimize的事件,但还是可以通过重载Deactive来实现WinForm捕获最小化事件. 实现方法为:当Form失去焦点后,测试WindowState取得Form状态,若为Minimized既是最小化事件. 本例为最小化后隐藏窗口: 还有种方法更加直接,重载WndProc: 实现代码如下: const int WM_SYSCOMMAND = 0x112; const int SC_CLOSE = 0xF060; const int SC_MINIMIZE =

Outlook 最小化不关闭图解

  Outlook 最小化不关闭图解 设置Outlook 最小化而不是真正的关闭 (1)      找到右下角通知区域右键 (2)找到Outlook 图标右键,去掉:最小化时隐藏 设置Outlook 最小化而不是关闭,完成

远程登陆最小化或关闭 模拟键盘操作失效

问题原因分析: 因为通过mstsc启动远程桌面连接时,被连接的Windows会启动一个会话(Session).此时你对远程桌面窗口里面的所有操作(鼠标,键盘)将会'翻译'成TCP包传输过去,被连接的Windows接收到这些包之后,'还原'命令并且在当前的活动会话上面执行.而当你断开连接时(点X关闭),会话变成断开状态,Windows会自动关闭会话(这里这样说是不准确的,事实上会话还是在的,只是状态变成断开的),也就导致了所有基于GUI的操作'失效'了. 当最小化远程桌面时,Windows为了节约

自定义窗体的最大化,最小化,关闭功能

namespace 自定义窗体的最大化_最小化和关闭按钮 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary> /// <param name="disp

C# 实现WinForm窗口最小化到系统托盘代码,并且判断左右鼠标的事件

1.设置WinForm窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标. 3.添加窗体最小化事件(首先需要添加事件引用): this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged); //上面一行是主窗体InitializeComponent()方法中需要添加的引用 private void Form1_Siz

WinForm常用控件属性与事件整理

1.窗体     ◇常用属性 (1)Name 属性: 用来获取或设置窗体的名称,在应用程序中可通过 Name 属性来引用窗体 . (2) WindowState 属性: 用来获取或设置窗体的窗口状态. 取值有三种: Normal (窗体正常显示). Minimized(窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示). (3)StartPosition 属性: 用来获取或设置运行时窗体的起始位置. (4)Text 属性: 该属性是一个字符串属性,用来设置或返回在窗口标题栏中显