定制任务栏托盘的dll
定制任務欄托盤的 dll
羅朝輝(飄飄白云)? 2009.06.08
http://www.cppblog.com/kesalin
(轉載時請注明作者和出處。未經(jīng)許可,請勿用于商業(yè)用途)
源文件下載: 點擊這里
google 項目地址: http://code.google.com/p/luotasktray/
通過對這個 dll 進行定制(修改圖標和插入菜單,很簡單的替換工作),你就很容易地在新工程中使用定制的任務欄托盤,這樣就省去了每寫一個桌面程序就要整些桌面托盤的代碼。而且這個dll所創(chuàng)建的任務欄托盤與主窗口是非阻塞模式的。?
效果如圖:
顯示任務欄托盤:
?
響應菜單事件:
如何定制自己的 dll?
分兩步,替換圖標和替換菜單。
第一步,替換圖標。
打開 LuoTaskTray 工程中的TaskTrayWindow.h,找到如下位置,修改成你自己的圖標就可以了。
// Load icon
hIcon = ::LoadIcon(NULL, IDI_APPLICATION);
// TODO: Load your icon here!
//hIcon = ::LoadIcon((HINSTANCE) GetWindowLongPtr(GWLP_HINSTANCE), MAKEINTRESOURCE(IDI_ICON1));
第二步,替換菜單。
打開 LuoTaskTray 工程中的TaskTrayWindow.h,找到如下位置,修改成你自己的菜單項目就可以了。
// TODO: Insert your menu items here! int i = 0; popup.InsertMenu(i++, MF_BYPOSITION, LuoTaskTray::TTM_EXIT, _T("Exit"));
如何使用定制的 dll?
第一步,包含頭文件,導入 lib 。
// Include header files for LuoTaskTray.
#include "include/LuoTaskTray.h"
#include "include/LuoTaskTrayImport.h"
// Import lib
#ifdef _DEBUG
#pragma comment(lib, "bin/LuoTaskTray_Debug.lib")
#else
#pragma comment(lib, "bin/LuoTaskTray.lib")
#endif
第二步,載入dll 并初始化,然后在程序退出時,清理,并卸載 dll 。
LuoTaskTray::UActivator* g_pLuoTaskTray; /** * @brief : Initialize LuoTaskTray * @param : * @return : bool */ bool InitLuoTaskTray() {HRESULT hRslt = LuoTaskTray::Activate_import(L"activator",(void**)&g_pLuoTaskTray);if (FAILED(hRslt)) {return false;}hRslt = g_pLuoTaskTray->Initialize();if (FAILED(hRslt)) {g_pLuoTaskTray->Uninitialize();g_pLuoTaskTray = NULL;return false;}return true; } /** * @brief : Uninitialize LuoTaskTray * @param : * @return : */ void UninitLuoTaskTray() {if (g_pLuoTaskTray != NULL) {g_pLuoTaskTray->Uninitialize();g_pLuoTaskTray = NULL;} }
第三步,創(chuàng)建任務欄托盤。
if (g_pLuoTaskTray){LuoTaskTray::UCreateParam param = {0, };param.hwnd = *this;param.CallbackMessage = LuoTaskTray::WM_TASK_TRAY_CALLBACK; // callback messageHRESULT hRslt = g_pLuoTaskTray->CreateTaskTray(¶m);if (SUCCEEDED(hRslt)) {} }
第四步,相應回調(diào)消息(菜單消息)
MESSAGE_HANDLER(LuoTaskTray::WM_TASK_TRAY_CALLBACK, OnTaskTrayCallback) LRESULT OnTaskTrayCallback(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) {int cmd = (int)wParam;HWND hwnd = (HWND) lParam;switch (cmd) {case LuoTaskTray::TTM_EXIT:// do somethingbreak;}return 0; }
總結
以上是生活随笔為你收集整理的定制任务栏托盘的dll的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中教史第三章
- 下一篇: 购物车中选择物品结算功能的实现