C#:隔离点击任务栏上的图标时的“最小化或者恢复”的效果

mac2022-06-30  17

  通常点击任务栏上的图标时,对应窗体实现“最小化或者恢复”的效果。但是在做最小化到托盘时,不希望点击任务栏图标时最小化到托盘,即希望拦截了这些效果(不允许:通过点击任务栏上的图标,实现“最小化或者恢复”的效果);

具体实现代码如下:

#region 区别 任务栏中点击窗体图标(最小化|恢复)与点击最小化按钮 private int WM_SYSCOMMAND = 0x112; private long SC_MINIMIZE = 0xF020; protected override void WndProc(ref Message m) { if (m.Msg == WM_SYSCOMMAND) { if (m.WParam.ToInt64() == SC_MINIMIZE && m.LParam.ToString() != "0") //m.LParam.ToString() != "0" 表示任务栏中点击窗体图标(最小化|恢复) { HideMainForm(); //这里直接将窗体图盘化//this.isMinBoxHited = true; //点击的是最小化按钮 通过中间变量不可行 return; } } base.WndProc(ref m); } #endregion View Code

如果想实现其他效果可以参考如下:

private int WM_SYSCOMMAND = 0x112; private long SC_MAXIMIZE = 0xF030; private long SC_MINIMIZE = 0xF020; private long SC_CLOSE = 0xF060; protected override void WndProc(ref Message m) { if (m.Msg == WM_SYSCOMMAND) { if (m.WParam.ToInt64() == SC_MAXIMIZE) { //MessageBox.Show("MAXIMIZE "); return; } if (m.WParam.ToInt64() == SC_MINIMIZE) { //MessageBox.Show("MINIMIZE "); return; } if (m.WParam.ToInt64() == SC_CLOSE) { //MessageBox.Show("CLOSE "); return; } } base.WndProc(ref m); } View Code

 

转载于:https://www.cnblogs.com/shenchao/p/4724694.html

最新回复(0)