不弹出气泡的问题在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
郁闷,一个系统的问题如果你不知道的话会让你闷死的。。。
NOTIFYICONDATAA note;
#define WM_SHELLNOTIFY WM_USER+5
//在resource中添加#define IDI_TRAY 9
case WM_SIZE:
//MoveWindow(hList, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
if (wParam==SIZE_MINIMIZED)
{
note.cbSize=sizeof(NOTIFYICONDATA);
note.hWnd=hDlg;
note.uID=IDI_TRAY;//自定义的ID
note.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;
note.uCallbackMessage=WM_SHELLNOTIFY; 这个是自定义的消息
note.hIcon=LoadIconA(hInst,(LPCSTR)IDI_ICON1);//图标
lstrcpyA(note.szTip,"天血防火墙 爱杀之爪");//鼠标移到托盘时显示的字符
ShowWindow(hDlg,SW_HIDE);
Shell_NotifyIconA(NIM_ADD,¬e);
}
break;
case WM_SHELLNOTIFY ://这个是自定义的消息
if (wParam==IDI_TRAY)
{
if (lParam==WM_RBUTTONDOWN)
{
//MessageBoxA(0,0,0,MB_OK);
//创建pop菜单
//__asm int 3
hPopupMenuTree=CreatePopupMenu();
//这里面的
//在rc中添加如下
//IDR_TRAYICON MENU
//BEGIN
// POPUP "托盘(&T)"
// BEGIN
/// MENUITEM "打开(&O)", IDM_OPENMAIN
/// MENUITEM "关于 (&A)...", IDM_ABOUTMAIN
// MENUITEM SEPARATOR
// MENUITEM "退出 程序(&S)", IDM_EXITMAIN
// END
//END
AppendMenu(hPopupMenuTree,MF_STRING,IDM_OPENMAIN,L"打开主窗口");
AppendMenu(hPopupMenuTree,MF_STRING,IDM_ABOUTMAIN,L"关于");
AppendMenu(hPopupMenuTree,MF_STRING,IDM_EXITMAIN,L"退出");
GetCursorPos(&Pos);
SetForegroundWindow(hDlg);
TrackPopupMenu(hPopupMenuTree,TPM_RIGHTALIGN,Pos.x,Pos.y,NULL,hDlg,NULL);
GetLastError();
PostMessage(hDlg,WM_NULL,0,0);
}
else if (lParam==WM_LBUTTONDBLCLK)
{
SendMessageA(hDlg,WM_COMMAND,IDM_OPENMAIN,0);
}
}
break;
case WM_CLOSE:
DestroyMenu(hPopupMenuTree);//删除菜单
//还要消耗那个托盘图标的,没弄了,呵呵
EndDialog(hDlg,0);
break;
//显示气泡的,自己随时用就行了
memset(¬e,0,sizeof(NOTIFYICONDATAA));
note.hWnd=hDlg;
note.uID=IDI_TRAY;
note.cbSize=sizeof(NOTIFYICONDATAA);
note.uFlags=NIF_INFO|NIF_MESSAGE|NIF_ICON;
note.uTimeout=4000;//气泡超时时间
note.dwInfoFlags=NIIF_INFO;
note.hIcon=LoadIconA(hInst,(LPCSTR)IDI_ICON1);//IDI_ICON1换成自己想要的图标
note.uCallbackMessage=WM_SHELLNOTIFY;
strcpy(note.szInfo,szMsg);//szMsg自己的内容
//
strcpy(note.szInfoTitle,szTitle);//标题内容
//
if (Shell_NotifyIconA(NIM_MODIFY,¬e)==TRUE)
{
MessageBoxA(0,"气泡成功",0,MB_OK);
}
else
{
//MessageBoxA(0,"气泡失败",0,MB_OK);
}