定制任务栏托盘的 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(&param); 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相关推荐

  1. Explorer.exe崩溃后自动重启任务栏托盘区图标丢失

    相信很多Windows用户都碰到过这种情况:运行某个程序时出现意外错误,导致外壳程序Explorer.exe崩溃而发生重启(即Explorer.exe被关闭后重新运行),任务栏也在消失后重新生成,但应 ...

  2. Qt之定制个性化系统托盘菜单(仿360安全卫士)

    一.效果 上图是我仿的360安全卫士的托盘菜单.顶部和底部的两个菜单项都将背景色设置成了360安全卫士的主题色,中间的大菜单项由6个按钮组成,像这些非规则的菜单项都需定制.虽然360安全卫士总是无缘无 ...

  3. 清除异常关闭进程的任务栏托盘区残留图标

    使用TerminateProcess关闭的进程如果生成过托盘图标,这个图标就会停留在右下角的托盘区(因为该进程来不及执行自己的图标清理代码),直到鼠标移上去时才消失.显然这个效果并不理想. 这里我们可 ...

  4. 玩机小技巧 | 自定义专属自己的优麒麟任务栏托盘

    一.应用场景 在系统使用的过程中,有些应用需要长时间运行在桌面环境中,例如网络,声音,麒麟天气,电源电池,输入法,QQ,微信等,为了让用户随时访问这些程序以及了解它们的状态,任务栏除了需要快速启动图标 ...

  5. win10系统托盘图标不见了_Win10任务栏托盘区域图标异常怎么办?任务栏通知区域重置方法...

    经常使用Win10系统的用户说,任务栏通知区域的图标异常已不是什么新鲜事.据分析,Win10任务栏通知区域异常是在两种情况下发生的:其一为声音.网络.电池等图标出现无法启用,而导致图标异常:其二是因为 ...

  6. 任务栏托盘不消失的问题-有启示

    通过找出该图标所相应的进程ID,假设该ID为NULL则删除该图标. #include <AFX.H> #include <COMMCTRL.H> #include <io ...

  7. 为Android Studio中的SettingsActivity定制任务栏 (Setting Activity其实本质上是从PreferenceActivity中继承过来的)

    Android Studio为开发者提供了很多内建的Activity, 其中Settings Activity是非常有用且功能强大的一种内建Activity. Setting Activity其实本质 ...

  8. Qt实现软件任务栏托盘功能

    PC端应用程序大部分都有"系统托盘",例如微信,QQ,360,腾讯视频等.在用Qt开发应用程序时,我们也可以实现"程序托盘". Qt提供的系统托盘类QSyste ...

  9. Winform DevExpress控件库(三) 使用NavBarControl控件定制导航栏

    NavBarControl控件:主要作用是制作包含多个选项组并且每个组里包含多个子选项的导航栏: 位于 工具箱 -> Navigation & Layout(导航栏与布局类控件) 目录下 ...

最新文章

  1. 2020-08-20 CountVectorizer 包含示例 API
  2. 8个可以提高数据科学工作效率、节省宝贵时间的Python库
  3. keil5图标变成白色_PPT中高大上的图标是怎么做的?
  4. python概述_Python-概述
  5. IIS识别Json文件
  6. linux7配置网卡绑定,CentOS7双网卡绑定配置
  7. PHP二维码在线制作生成系统源码 无需数据库 带logo图标
  8. 动态内存分配(c++)
  9. 网站在线沟通工具,网站即时聊天工具-TTKEFU在线客服系统功能介绍
  10. js常用的加密/解密方法
  11. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.13
  12. java 分布式任务_分布式定时任务(一)
  13. php站长统计,CNZZ站长统计产生的警告处理办法
  14. 极速办公(excel)身份证中的出生日期如何提取
  15. 新发的日常小实验——使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍数(Unity、PIL、Pillow、压缩)
  16. usleep的调用过程
  17. python语音特征提取_使用Python从视频中提取语音
  18. 速卖通产品如何推广引流?速卖通如何引流?
  19. android 开源项目
  20. 图书管理系统(vue2 + springboot +mybatis-Plus)前后端分离项目

热门文章

  1. 尊重孩子 梅兰芳“宠溺有道”
  2. Python小技术-----三维画图
  3. 多线程写法 与老虎机的制作
  4. 阅读Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition(CVPR2020)
  5. 最全的BAT大厂面试题整理
  6. Shiro的在Springboot中的使用
  7. 如何掌握UI设计精髓 Logo设计有哪些基本要素
  8. 非专业python学多久_非的解释|非的意思|汉典“非”字的基本解释
  9. 《数据分析实战》--用R做交叉列表
  10. 开发实用Linux命令