[c#]可在任意位置彈出的BalloonTip

來源:互聯網
上載者:User
      BalloonTip通常出現在位於螢幕右下角的Tray(成為通知欄,或系統托盤)的Icon上,比如使用者插拔USB裝置時的氣泡提示。該函數位於Shell32中,是通過調用下面這個API函數實現的, BOOL Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA lpdata ); 該函數用於控制對TrayIcon進行控制,可以彈出BalloonTip。然後卻只能局限於Tray位置。而在QQ的聊天對話方塊中,我們發現如果不輸入內容而試圖發送訊息時,就會在按鈕上彈出這樣的Tip。為此,我在C#中寫了一個類似的視窗,可以在任意位置浮出,效果如下:
      

      這是測試程式的。在實現時,略微參考了codeproject上的仿MSN浮出視窗的代碼。其涉及的主要麻煩是,為了提供足夠靈活的介面,應該如何處理視窗上各個元素布局。為了簡單期間,這裡僅僅提供了“箭頭”位於右下角的布局方式。(很顯然該箭頭一共可以有8個固定位置)。
     (1)在彈出時,不奪走其他視窗焦點。為此使用了API的ShowWindow函數: ShowWindow(this.Handle, SW_SHOWNOACTIVATE);
     (2)表單上一共包含4項主要內容:表徵圖,標題,內容文本,關閉按鈕。使用者可以配置他們,例如選擇表徵圖(可以由外部設定或者使用內建表徵圖),是否顯示關閉按鈕,是否自動關閉(如果把TimeoutMilliSeconds屬性設為負數則不會自動關閉,只能通過CloseButton關閉),各種顏色,字型等。另提供一個BalloonClick事件,通知外部使用者點擊事件。
     (3)繪製CloseButton的位元影像時,由於圖中具有透明色,因此需要在繪製時指定透明色,相當於蒙版的作用。否則透明色會被繪製到表單上導致表單透明那個。
     (4)彈出該視窗,主要使用ShowAt()函數。裡面需要一些參數。如果需要進一步設定其他屬性,可以單獨進行設定。

       原始碼的下載連結: 
       http://files.cnblogs.com/hoodlum1980/JDL.UILib_BalloonTip_VS7.rar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.