C#簡單實現漸顯彈出訊息在”右下角”顯示(Demo)

來源:互聯網
上載者:User

    最近公司的事情不多,自己實現了一個簡單的功能,算是一個demo,功能極其簡單,而且我們還經常遇到起。

就是在右下角漸層的彈出一個提示框出來,有點類似於QQ或MSN那訊息提示功能.(從下往上漸層顯示出來)

當然可以進行其他擴充(如對表單美化,內容控制等),這裡只是一個很簡單的實現。就沒有考慮那麼多了。

下面是主要的代碼:(主要是調用了系統的API函數實現漸層效果)。其實就是調用了這個函數產生了漸層效果,從下往上顯示

  [DllImport("user32")]
        private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
        const int AW_HOR_POSITIVE = 0x0001;
        const int AW_HOR_NEGATIVE = 0x0002;
        const int AW_VER_POSITIVE = 0x0004;
        const int AW_VER_NEGATIVE = 0x0008;
        const int AW_CENTER = 0x0010;
        const int AW_HIDE = 0x10000;
        const int AW_ACTIVATE = 0x20000;
        const int AW_SLIDE = 0x40000;
        const int AW_BLEND = 0x80000;

調用代碼就省略了哈。 

下面是這個API函數的相關說明(參考網路其他資源)

//添加引用 
  using  System.Runtime.InteropServices;      
  //聲明API 
  [DllImport("user32")] 
  private  static  extern  bool  AnimateWindow(IntPtr  hwnd,int  dwTime,  int  dwFlags); 
  const  int  AW_HOR_POSITIVE  =  0x0001; 
  const  int  AW_HOR_NEGATIVE  =  0x0002; 
  const  int  AW_VER_POSITIVE  =  0x0004; 
  const  int  AW_VER_NEGATIVE  =  0x0008; 
  const  int  AW_CENTER  =  0x0010; 
  const  int  AW_HIDE  =  0x10000; 
  const  int  AW_ACTIVATE  =  0x20000; 
  const  int  AW_SLIDE  =  0x40000; 
  const  int  AW_BLEND  =  0x80000;  
  //表單載入時的動畫效果API 
  AnimateWindow(this.Handle,1000,  AW_VER_NEGATIVE  |AW_ACTIVATE);//從下到上且不佔其它程式焦點      
    
  /*下面是AnimateWindow的具體說明 
  AnimateWindow  API          
  函數AnimateWindow. 
          儘管MSDN頁面上說這個函數是Win2000的最新函數,但經網友證實在Win98裡就已經有這個函數了:      
  Private  Declare  Function  AnimateWindow  Lib  "user32"  (ByVal  hwnd  As  Long,  ByVal  dwTime  As  Long,  ByVal  dwFlags  As  Long)  As  Long 
   
  其中: 
     hwnd只對Form有效,其他像Picture1都無法產生效果。 
     dwTime是動畫持續的時間,預設為200。 
     dwFlags可取以下值: 
       AW_HOR_POSITIVE  (    &H1    )  '從左至右開啟視窗 
       AW_HOR_NEGATIVE  (    &H2    )  '從右至左開啟視窗 
       AW_VER_POSITIVE  (    &H4    )  '從上到下開啟視窗 
       AW_VER_NEGATIVE  (    &H8    )  '從下到上開啟視窗 
       AW_CENTER     (    &H10  )  '看不出任何效果 
       AW_HIDE      (&H10000)  '在表單卸載時若想使用本函數就得加上此常量   
       AW_ACTIVATE    (&H20000)  '在表單通過本函數開啟後,預設情況下會失去焦點,除非加上本常量   
       AW_SLIDE       (&H40000)  '看不出任何效果 
       AW_BLEND       (&H80000)  '淡入淡出效果 
   
  最後一個就是我要找的,遺憾的是只對Win2000有效。

 

另外還有一個要點是:如何讓彈出的表單在右下角:也很簡單,供參考:

Code
int x = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Width-this.Width;
int y = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Height-this.Height;
this.SetDesktopLocation(x, y);

 

好了,關鍵代碼都出來了,由於只是一個很小的功能demo,沒怎麼具體最佳化。這裡只供提供一種思路。有興趣的朋友可以自己去進行擴充:

原始碼下載:MessageShowDemo

 

資料參考:  http://www.cnblogs.com/risen/archive/2008/01/15/1039751.html

 

Charles Chen

MSN:gotosunny@msn.com

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.