[C#]像MSN的Taskbar Notifier
延續前幾篇,由於最近在弄一個類似MSN的小幫手工具,因此開始嘗試把一些MSN有的功能加到我們的小幫手中,而今天要講的就是類似MSN即時訊息的彈跳視窗,這個功能是直接拿CodeProject上別人撰寫好的程式來修改的:TaskbarNotifier, a skinnable MSN Messenger-like popup in C# and now in VB.NET
我們先看看別人做好的效果吧,如何?是不是很像呢?還可以幫它改版成下方的那個可愛方式:
而這是我們工具中的畫面:
說起來這個功能的使用範例還挺簡單的,先下載它的範例,找到TaskbarNotifier.cs這個Form,加入到專案中,這時候我們就可以開始使用這個小玩意囉,寫法很簡單,下面這一段就可以做到上頭的效果:
//背景圖與顏色
taskbarNotifier1.SetBackgroundBitmap(Resources.skin00, Color.FromArgb(255, 0, 255));
//關閉的途與背景色
taskbarNotifier1.SetCloseBitmap(Resources.Close, Color.FromArgb(255, 0, 255), new Point(280, 57));
//Title的區塊座標
taskbarNotifier1.TitleRectangle = new Rectangle(150, 57, 125, 28);
//內容的區塊座標
taskbarNotifier1.ContentRectangle = new Rectangle(75, 92, 215, 55);
//是否允許按下Close
taskbarNotifier1.CloseClickable = true;
//是否允許按下Title
taskbarNotifier1.TitleClickable = true;
//是否允許按下Content
taskbarNotifier1.ContentClickable = true;
//滑鼠點在上頭時不要縮小
taskbarNotifier1.KeepVisibleOnMousOver = true;
//縮小過程中如果mouse-over就再跳出來
taskbarNotifier1.ReShowOnMouseOver = true;
//顯示訊息視窗,設定title、Content、出現速度、停留時間、消失時間
taskbarNotifier1.Show("新訊息", "您有一則新訊息!!", 2000, 3000, 500);
功能上十分簡單易懂,不過這個Form到底是用了什麼功能,明明他也是繼承了Form,為何它可以做出這樣的效果,而且感覺上這個Form的呈現有點脫離一般Window form的顯示模式,如何做到的?
既然Source都有了,就看一下吧,嗯,原來他是使用Win32 API來達成,那也無怪乎可以做這樣的呈現模式了:
private static extern Boolean ShowWindow(IntPtr hWnd,Int32 nCmdShow);
看了一下,小章這邊有一篇有寫到相關的東西,可以參考他的說明更清楚,他有將參數2這個數值所代表的意思做了一些條列,搭配MSDN的說明就更清楚了:
[C#.NET][VB.NET] 利用Win32 API 函數 ShowWindowAsync / ShowWindow 改變視窗大小
這樣的功能雖然單純,但整合上依篇我提到的應用,我們就可以將使用者的使用習慣由被動的拉變成主動的推了,當使用者有工作交派下來時,就會收到通知,如果沒有檢視該通知,則資訊會被放在訊息佇列中,點選後可以直接看與此工作相關的內容,不管是Web/Windows程式都可以以類似的方式整入這個小工具中。
參考資料:
TaskbarNotifier, a skinnable MSN Messenger-like popup in C# and now in VB.NET
[C#.NET][VB.NET] 利用Win32 API 函數 ShowWindowAsync / ShowWindow 改變視窗大小
游舒帆 (gipi) 探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。 |