定制任务栏托盘的dll
来源:互联网 发布:edx 中文 python 编辑:程序博客网 时间:2024/05/17 04:33
http://blog.csdn.net/kesalin/article/details/4251760
定制任务栏托盘的dll
分类: Windows2009-06-08 15:29 302人阅读 评论(0) 收藏 举报
定制任务栏托盘的 dll
罗朝辉(飘飘白云) 2009.06.08
http://www.cppblog.com/kesalin
(转载时请注明作者和出处。未经许可,请勿用于商业用途)
源文件下载: 点击这里
google 项目地址: http://code.google.com/p/luotasktray/
通过对这个 dll 进行定制(修改图标和插入菜单,很简单的替换工作),你就很容易地在新工程中使用定制的任务栏托盘,这样就省去了每写一个桌面程序就要整些桌面托盘的代码。而且这个dll所创建的任务栏托盘与主窗口是非阻塞模式的。
效果如图:
显示任务栏托盘:
响应菜单事件:
如何定制自己的 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;
- }
- }
第三步,创建任务栏托盘。
- if (g_pLuoTaskTray){
- LuoTaskTray::UCreateParam param = {0, };
- param.hwnd = *this;
- param.CallbackMessage = LuoTaskTray::WM_TASK_TRAY_CALLBACK; // callback message
- HRESULT hRslt = g_pLuoTaskTray->CreateTaskTray(¶m);
- if (SUCCEEDED(hRslt)) {
- }
- }
第四步,相应回调消息(菜单消息)
- 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 something
- break;
- }
- return 0;
- }
- 定制任务栏托盘的dll
- 定制任务栏托盘的dll
- 隐藏任务栏的开始菜单、托盘
- 任务栏托盘
- 一个优秀的VC++任务栏托盘源码
- 一个优秀的VC++任务栏托盘源码
- MFC程序任务栏托盘图标的实现
- 关于任务栏/任务栏托盘编程
- delphi任务栏托盘写法
- VC实现任务栏托盘
- 制作任务栏托盘菜单
- VC++实现任务栏托盘
- 浅谈c#实现隐藏任务栏图标的Windows托盘程序
- 在windows系统任务栏的托盘中显示图标 c++
- 浅谈c#实现隐藏任务栏图标的Windows托盘程序
- 为自己的应用程序添加任务栏托盘功能
- 任务栏程序图标与托盘图标的移动
- 任务栏托盘不消失的问题-有启发
- C语言中变量的位置与程序优化
- 面试题:求2个有序数组的有序交集
- 今天才知道如果你还靠敲代码来养家糊口,那真的是弱爆了……
- 数据库的迁移
- C# MD5加密解密类 winform
- 定制任务栏托盘的dll
- 阿里巴巴笔试题-2个有序集合的交集
- 鼠标显示
- [免费活动通知]高性能、可嵌入数据库InterBase网络研讨会
- linux read() 函数
- 阿里巴巴笔试题-马尔科夫(HMM)的特征
- AOP及其在Spring中的应用(一) .
- centos yum 使用方法
- 界面抖动