用C++Builder實現工作列圖示動畫效果 (轉)
主頁:/">
to::maxchou@163.com">郵件:maxchou@163.com
平臺為應用提供許多的特色功能,任務圖欄就是一個非常實用和經典的一個。它不但可以節省工作列的空間,還可以透過不同的圖示或動畫效果來說明程式的當前狀態等的資訊。Windows裡沒有直接提供工作列圖示動畫效果的支援,所以要自己透過編碼實現,在這篇文章裡大家可以看到其中一種實現工作列圖示動畫效果的方法。
首先要了解一下有關工作列圖示的知識,要實現對工作列圖示的控制主要是透過_NotifyIcon()進行。該函式的宣告如下:
BOOL Shell_NotifyIcon( D dwMessage, PNOTIFYICONDATA lpdata );
引數dwMessage是指定進行什麼樣的動作,可選值有:NIM_ADD, NIM_DELETE, NIM_MODIFY, NIM_SETFOCUS, NIM_SETVERSION,分別代表為:新增、刪除、修改、獲得焦點、設定版本號,對於NIM_SETFOCUS,NIM_SETVERSION一般比較少用,我們最常使用的主要是NIM_ADD ,NIM_DELETE, NIM_MODIFY。
另一個引數lpdata是一個NOTIFYICONDATA結構的指標,這個結構內容比較多,定義如下:
typedef struct _NOTIFYICONDATA { DWORD cbSize; HWND hWnd; UINT uID; UINT uFlags; UINT uCallbackMessage; HICON hIcon; #if (__< 0x0500) TCHAR szTip[64]; #else TCHAR szTip[128]; #endif #if (_WIN32_IE >= 0x0500) DWORD dwState; DWORD dwStateMask; TCHAR szInfo[256]; union { UINT uTimeout; UINT uVersion; } DUMMYUNIONNAME; TCHAR szInfoTitle[64]; DWORD dwInfoFlags; #endif #if (_WIN32_IE >= 0x600) GUID guidItem; #endif } NOTIFYICONDATA, *PNOTIFYICONDATA;
在這裡我們主要留意上面粗體的成員cbSize, hWnd, uID, uFlags, uCallbackMessage, hIcon, szTip等的內容及用法。分別代表的意思是:結構體大小,視窗控制程式碼,圖示標識,回撥函式,所包含的內容標誌,圖示控制程式碼,文字提示。
我們要定義自己的通知訊息和圖示標識來進行處理,內容如下:(這些內容在窗體的頭中定義)
const int WM_NC_NOTIFY = (WM_USER + 1); // 自定義的通知訊息 const int WM_NC_TRAYID = (WM_USER + 2); // 自定義的圖示標識
一般情況下,都是在把應用程式最小化後才在工作列顯示小圖示,所以我們還必須捕獲訊息WM_SYMMAND中wParam引數所帶最小化命令,然後再進行有關的處理。另外最重要的就是要捕獲自定義通知訊息WM_NC_NOTIFY了,這些內容定義如下:(在窗體類的private內定義)
BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(WM_SYSCOMMAND, TMessage, WMSysCommand); VCL_MESSAGE_HANDLER(WM_NC_NOTIFY, TMessage, WMNCNotify) END_MESSAGE_MAP(TForm)
為了要實現動畫效果,我們就需要有一個ImageList和Timer。ImageList中存放了每一幀的圖示,Timer是定時改變NOTIFYICONDATA結構中的圖示控制程式碼來實現動畫效果。主要建立幾個功能函式實現,分別是新增圖示AddTrayIcon(),修改圖示ModifyTrayIcon(),刪除圖示DeleteTrayIcon()。
至於具體功能的實現細節這裡就不費筆墨了,大家可以/mss/tray_ani_src.rar">工作列圖示動畫示例原始碼進行檢視,該示例在BCB6 + 下編譯透過。歡迎交流!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-959266/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用JavaScript實現動畫效果 (轉)JavaScript動畫
- 【Qt開發】更改應用程式圖示和工作列圖示QT
- 用js實現動畫效果核心方式JS動畫
- React實現動畫效果React動畫
- Javascript實現動畫效果JavaScript動畫
- 用C++Builder實現Word 97自動化 (轉)UI
- 開發具有Windows工作列佈告區圖示的應用程式 (轉)Windows
- CSS3邊框旋轉動畫實現效果CSSS3動畫
- 工作列圖示空白,圖示是一塊白板
- win10改工作列圖示方法 win10如何更改工作列圖示Win10
- jQuery 動畫效果 與 動畫佇列jQuery動畫佇列
- Windows XP 清除工作列隱藏圖示記錄(轉)Windows
- 滑鼠懸浮實現圖片動畫上下切換效果動畫
- Flutter動畫實現粒子漂浮效果Flutter動畫
- 在工作列上顯示圖示 (轉)
- QT 讓工作列圖示閃爍QT
- Electron工作列圖示定製分析
- C++Builder下實現埠讀寫 (轉)C++UI
- win10 圖示怎麼放到工作列_win10怎麼把圖示放到工作列Win10
- win10qq圖示怎樣在工作列顯示_win10qq圖示在工作列顯示的方法Win10
- VC實現動畫應用兩則 (轉)動畫
- iOS開發中動畫之點贊圖示放大效果iOS動畫
- Flutter 類抽屜效果動畫實現。Flutter動畫
- 加入購物車動畫效果實現動畫
- Web 頁面如何實現動畫效果Web動畫
- javascript實現文字拼寫動畫效果JavaScript動畫
- SVG實現動態模糊動畫效果SVG動畫
- SVG 實現動態模糊動畫效果SVG動畫
- 實現漫天飛雪的動畫效果動畫
- jQuery實現對陣列元素的轉換效果jQuery陣列
- 用Provider實現商品加入購物車的動畫效果IDE動畫
- 用 C++BUILDER 實現 POP3 電子郵件的接收 (轉)C++UI
- 滑鼠懸浮圖片實現翻轉效果
- canvas實現的旋轉太極圖效果Canvas
- 用js(hover )+css實現下拉框效果(有效果圖)JSCSS
- win10 選擇圖示怎麼顯示工作列_win10選擇快速操作圖示如何顯示在工作列Win10
- win10怎麼把工作列圖示居中_win10電腦工作列圖示居中顯示設定方法Win10
- win10工作列圖示放大如何設定_win10工作列圖示大小怎麼調整Win10