这主要是用到了一个接口 Shell_NotifyIcon,这个有三个操作,添加,修改,删除
BOOL Engine::ShowBalloonTip(LPCTSTR szMsg, LPCTSTR szTitle, DWORD nType, DWORD dwInfoFlags /* = NIIF_INFO */, UINT uTimeout /* = 1000 */) { if (ICON_ADD == nType) { m_nid.cbSize = sizeof(NOTIFYICONDATA); m_nid.hWnd = m_hParentWnd; m_nid.uID = IDI_SMALL; m_nid.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_SMALL)); Shell_NotifyIcon(NIM_ADD, &m_nid); } m_nid.cbSize = sizeof(NOTIFYICONDATA); m_nid.uFlags = NIF_INFO | NIF_ICON; m_nid.uVersion = NOTIFYICON_VERSION; m_nid.uTimeout = uTimeout; m_nid.dwInfoFlags = dwInfoFlags; wsprintfW(m_nid.szInfo, L"%s", szMsg ? szMsg : _T("")); wsprintfW(m_nid.szInfoTitle, L"%s", szTitle ? szTitle : _T("")); BOOL bFlag = false; bFlag = Shell_NotifyIcon(NIM_MODIFY, &m_nid); if (ICON_DELETE == nType) { bFlag = Shell_NotifyIcon(NIM_DELETE, &m_nid); } return bFlag; }
一.添加图标 NIM_ADD
添加图标主要是NOTIFYICONDATA这个结构体的配置,具体成员变量可以自己百度哈,有的人图标出不来,主要是在
1.uFlags这个参数出问题,如果没有加上NIF_ICON是不会有图标,至于要其他特效自己多参考接口说明
2.LoadIcon这个函数上也有人会不经意出问题,要仔细检查,一个是路径可能出问题,还有就是资源文件里是否存在这个标识符,可以先打开.rc文件查看
二.更改图标NIM_MODIFY
修改提示信息,图标转换,都要经过这个接口
三.删除图标ICON_DELETE
删除图标会很快,这个图标的逗留时间比较短,所以如果你想让效果更明显,最好是加个sleep睡眠时间,但是又会影响进程,所有如果条件允许加入消息队列,由另一个进程去处理等待,这样会比较好