C#:隔離點擊任務欄上的圖標時的“最小化或者恢復”的效果


  通常點擊任務欄上的圖標時,對應窗體實現“最小化或者恢復”的效果。但是在做最小化到托盤時,不希望點擊任務欄圖標時最小化到托盤,即希望攔截了這些效果(不允許:通過點擊任務欄上的圖標,實現“最小化或者恢復”的效果);

具體實現代碼如下:

        #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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM