windows程序托盘图标以及消息提示--示例程序

来源:互联网 发布:软件开发合同 性质 编辑:程序博客网 时间:2024/05/21 21:46

之前两个博客介绍一些基本姿势,都是msdn上的,今天就介绍一下如何使用吧。

为了简单起见,还是创建一个MFC based on dialog 功能吧。

1创建托盘图标,封装了成一个函数:

NOTIFYICONDATA m_nid;bool SetupTrayIcon(HWND m_hWnd){    m_nid.cbSize=sizeof(NOTIFYICONDATA);// 结构大小    m_nid.hWnd=m_hWnd;  // 接收 托盘通知消息 的窗口句柄    m_nid.uID=IDR_MAINFRAME;                                m_nid.uFlags=NIF_MESSAGE//表示uCallbackMessage 有效     m_nid.uCallbackMessage=WM_PROC; // 消息被发送到此窗口过程    m_nid.hIcon=::LoadIcon(::GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MAINFRAME));     strcpy(m_nid.szTip,"我的任务栏程序");              // 提示文本    return 0!=Shell_NotifyIcon(NIM_ADD,&m_nid); }

2消息提醒
如果你仔细阅读过NOTIFYICONDATA,你肯定会恍然大悟,气泡提示不是针对所有的系统的。

XP上当然一点作用没有,WIN7上是气泡提醒,而在WIN10上就变成了从侧面滑入的形式(Metro式的通知方式)。但是代码是通用的:

BOOL ShowBalloonTip(LPCTSTR szMsg,LPCTSTR szTitle,DWORD dwInfoFlags=NIIF_INFO,UINT uTimeout=1000){    m_nid.cbSize=sizeof(NOTIFYICONDATA);    m_nid.uFlags = NIF_INFO;    m_nid.uVersion = NOTIFYICON_VERSION;    m_nid.uTimeout = uTimeout;    m_nid.dwInfoFlags = dwInfoFlags;    strcpy(m_nid.szInfo,szMsg ? szMsg : _T(""));    strcpy(m_nid.szInfoTitle,szTitle ? szTitle : _T(""));    return 0!=Shell_NotifyIcon(NIM_MODIFY, &m_nid);}    

3删除托盘图标
简单的很:

Shell_NotifyIcon(NIM_DELETE,&m_nid);

不多说了 上一个提示对比图吧:
这里写图片描述
这里写图片描述
通用的代码 不同的效果

1 0
原创粉丝点击