VC++: WTL系统托盘的简单示例

wtl、mfc本质上和win32区别不大,按照其关键字搜索都能找到对应的win32函数。

wtl、mfc是对win32函数的hWnd封装,使用m_hWnd代替hWnd,win32函数和mfc函数对比,只是多了hWnd而已。将同功能的win32函数封装进一个类中。

1. 定义自定义消息(NOTIFYICON响应的消息):

 #define WM_NOTIFYICON WM_USER + 0x9001

2. 在消息循环中加入

MESSAGE_HANDLER(WM_NOTIFYICON, OnIconNotification)

3.定义 NOTIFYICON 变量,声明响应的回调函数

NOTIFYICONDATA m_NotifyIconData;
LRESULT OnIconNotification(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);

4.   CMainFrame::OnCreate 函数中加入 初始化代码

    m_NotifyIconData.cbSize = sizeof(NOTIFYICONDATA);
    m_NotifyIconData.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_INFORMATION));
    m_NotifyIconData.hWnd = m_hWnd;
    m_NotifyIconData.uFlags = NIF_MESSAGE|NIF_TIP|NIF_ICON;   
    m_NotifyIconData.uID = 1;
    m_NotifyIconData.uCallbackMessage = WM_NOTIFYICON;
    _tcscpy_s(m_NotifyIconData.szTip,_T("Hello World"));
    Shell_NotifyIcon(NIM_ADD, &m_NotifyIconData);

5. CMainFrame::OnDestroy

Shell_NotifyIcon(NIM_DELETE, &m_NotifyIconData); 

6. CMainFrame::OnIconNotification

LRESULT CMainFrame::OnIconNotification(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
    if(wParam != m_NotifyIconData.uID)
    {
        return FALSE;
    }

    switch(lParam)
    {
    case WM_LBUTTONDOWN:
        {
            MessageBox(_T("Hello World"));
            break; 
        }
    }

    return TRUE;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version PrologueWTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue WTL for MFC Programmers, Chinese Version Prologue ................................ ........................... 6 WTL for MFC Programmers, Part I - ATL GUI Classes ................................ ........................... 8 README.TXTREADME.TXT README.TXTREADME.TXT README.TXTREADME.TXT ................................ ................................ ................................ ......................... 8 对本系列文章的总体介绍 对本系列文章的总体介绍 对本系列文章的总体介绍 ................................ ................................ ................................ ....... 9 对第一章的简单介绍 对第一章的简单介绍 ................................ ................................ ................................ ............. 11 ATL ATL ATL 背景知识 ................................ ................................ ................................ ....................... 11 ATL 和 WTL 的发展历史 ................................ ................................ ......................... 12 ATL-style 模板 ................................ ................................ ................................ ............. 12 ATL ATL ATL 窗口类 ................................ ................................ ................................ ........................... 15 定义一个窗口的实现 定义一个窗口的实现 ................................ ................................ ................................ ............. 17 填写消息映射链 ................................ ................................ ................................ ............. 19 高级消息映射链和嵌 高级消息映射链和嵌 入类 ................................ ................................ ................................ ..... 21 ATLATL 程序的结构 ................................ ................................ ................................ .................... 24 ATLATL 中的对话框 ................................ ................................ ................................ .................... 27 WTL for MFC Programmers, Part II - WTL GUI Base Classes ................................ ............. 32 对第二部分的介绍 对第二部分的介绍 ................................ ................................ ................................ ................. 32 WTL WTL WTL WTL 总体印象 ................................ ................................ ................................ ...................... 32 开始写 WTLWTLWTL程序 ................................ ................................ ................................ .................. 33 WTL WTL WTL WTL 对消息映射的增强 ................................ ................................ ................................ ...... 36 从 WTLWTLWTL的应用程序生成向导能得到什么 的应用程序生成向导能得到什么 的应用程序生成向导能得到什么 ................................ ................................ .......... 42 使用向导的整个过程 ................................ ................................ ................................ ..... 42 查看生成的代码 ................................ ................................ ................................ ............. 44 CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop CMessageLoop 的内部实现 ................................ ................................ ................................ .. 47 CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl CFrameWindowImpl 的内部实现 ................................ ................................ ......................... 48 回到前面的时钟程序 回到前面的时钟程序 ................................ ................................ ................................ ............. 50 界面元素的自动更新 界面元素的自动更新 (UI Updating)(UI Updating)(UI Updating)(UI Updating) (UI Updating) (UI Updating)(UI Updating)(UI Updating)(UI Updating) (UI Updating) ................................ ................................ ...................... 51 添加控制时钟的新菜单项 ................................ ................................ ............................. 52 调用 UIEnable()................................ ................................ ................................ ............ 53 消息映射链中最后需要注意的地方 消息映射链中最后需要注意的地方 消息映射链中最后需要注意的地方 消息映射链中最后需要注意的地方 ................................ ................................
使用说明 微软最新的编程工具Visual Studio 2013 已经发布,想在该平台下使用WTL的话,目前还没有对应的安装文件(一般学者),本人将自己改写的文件上传到CSDN,供朋友使用。改写的版本为 WTL81_12085 第一步:下载文件包“WTL_81_12085_For_VS2013.rar”,解压后,有两个文件夹和两个文件 文件夹: Application (WTL添加到VS创建向导里的一些文件) 文件夹: Include (include就是WTL的头文件) 文件: setup120.js (安装脚本) 文件: 使用说明.txt 第二步:找到"VS安装目录\VC\VCWizards\AppWiz"这个目录, 如我电脑上就是"F:\Program Files\Microsoft Visual Studio 12.0\VC\VCWizards\AppWiz", 在这个目录下新建一个WTL文件夹,然后将Application文件夹和setup120.js拷贝到WTL文件夹下。 第三步:双击“setup120.js”进行安装,或者用命令行执行。 命令行操作方法如下: 运行CMD,执行如下代码: wscript //e:jscript "F:\Program Files\Microsoft Visual Studio 12.0\VC\VCWizards\AppWiz\WTL\setup110.js" 第四步:在“安装盘:\Program Files\Microsoft Visual Studio 12.0\VC”建一个WTL文件夹, 将解压出来的Include文件夹拷贝到此文件夹下面。 在编译工程时,将“安装盘:\Program Files\Microsoft Visual Studio 12.0\VC\WTL\Include”目录添加进包含目录。 第四步,可以不操作,只要编译时,将Include (WTL的头文件)目录添加进包含目录。 添加包含目录的操作为:打开工程属性页->配置属性->VC++目录->包含目录->编辑->写入路径->确定 也可以通过改写配置文件,添加为默认的包含路径,具体的方法请在网上找一下。 任何单位或个人转发本文件包请保留作者信息,谢谢! 水梦雪 SnowEmail3074@163.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值