不弹出气泡的问题在targetver.h头文件中
将0x0600都改成0x0501 ,如下所示:
#pragma once
// 以下宏定义要求的最低平台。要求的最低平台
// 是具有运行应用程序所需功能的 Windows、Internet Explorer 等产品的
// 最早版本。通过在指定版本及更低版本的平台上启用所有可用的功能,宏可以
// 正常工作。
// 如果必须要针对低于以下指定版本的平台,请修改下列定义。
// 有关不同平台对应值的最新信息,请参考 MSDN。
#ifndef WINVER // 指定要求的最低平台是 Windows Vista。
#define WINVER 0x0501 // 将此值更改为相应的值,以适用于 Windows 的其他版本。
#endif
#ifndef _WIN32_WINNT // 指定要求的最低平台是 Windows Vista。
#define _WIN32_WINNT 0x0501 // 将此值更改为相应的值,以适用于 Windows 的其他版本。
#endif
#ifndef _WIN32_WINDOWS // 指定要求的最低平台是 Windows 98。
#define _WIN32_WINDOWS 0x0410 // 将此值更改为适当的值,以适用于 Windows Me 或更高版本。
#endif
#ifndef _WIN32_IE // 指定要求的最低平台是 Internet Explorer 7.0。
#define _WIN32_IE 0x0700 // 将此值更改为相应的值,以适用于 IE 的其他版本。
#endif
在CWnd::OnSize中确定是否触发最小化并隐藏窗口,添加系统托盘
if(nType==SIZE_MINIMIZED)
{
NOTIFYICONDATA m_Htnd;
m_Htnd.cbSize = sizeof(NOTIFYICONDATA);
m_Htnd.hWnd = this->m_hWnd;
m_Htnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
m_Htnd.uCallbackMessage = WM_MYMESSAGE;
m_Htnd.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
m_Htnd.uID = IDR_MAINFRAME;
wcscpy_s(m_Htnd.szTip,_T("托盘示例"));
Shell_NotifyIcon(NIM_ADD,&m_Htnd);
ShowWindow(SW_HIDE);
ShowInfo();
}
void CTimingDlg::ShowInfo()
{
m_Htnd.cbSize = sizeof(NOTIFYICONDATA);
m_Htnd.hWnd = GetSafeHwnd();
m_Htnd.uFlags = NIF_INFO;
m_Htnd.uID=IDR_MAINFRAME;
m_Htnd.dwInfoFlags=1;
m_Htnd.uTimeout = 3000;
wcscpy(m_Htnd.szInfoTitle,_T("气泡标题"));
wcscpy(m_Htnd.szInfo,_T("气泡内容"));
Shell_NotifyIcon(NIM_MODIFY,&m_Htnd);
}