首页 > Windows开发 > 详细

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

时间:2015-08-12 18:20:31      阅读:277      评论:0      收藏:0      [点我收藏+]

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

具体实现代码如下:

技术分享
        #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

 

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

原文:http://www.cnblogs.com/shenchao/p/4724694.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!