【Win32 API】在系统托盘显示图标和弹出气泡
BOOL Shell_NotifyIcon(
DWORD dwMessage,
PNOTIFYICONDATA lpdata
);
实例
显示图标:
void ShowTrayIcon(void) { //显示托盘 NOTIFYICONDATA nid; //NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息, //它包括选择的图标、回调消息、提示消息和图标对应的窗口等内容。 nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); //以字节为单位的这个结构的大小 nid.hWnd = m_hWnd; //接收托盘图标通知消息的窗口句柄 nid.uID = IDR_MAINFRAME; //应用程序定义的该图标的ID号 nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP ; //设置该图标的属性 nid.uCallbackMessage = WM_TRAYICON; //应用程序定义的消息ID号,此消息传递给hWnd nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME1)); //图标的句柄 wcscpy(nid.szInfoTitle,_T("提示")); strTip.Format(_T("系统崩溃了。。。")); wcscpy(nid.szTip,strTip); //鼠标停留在图标上显示的提示信息 Shell_NotifyIcon(NIM_ADD,&nid); //在托盘区添加图标de函数 }
弹出提示:
void ChangeTrayTip() { NOTIFYICONDATA nid; //NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息, //它包括选择的图标、回调消息、提示消息和图标对应的窗口等内容。 nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); //以字节为单位的这个结构的大小 nid.hWnd = m_hWnd; //接收托盘图标通知消息的窗口句柄 nid.uID = IDR_MAINFRAME; //应用程序定义的该图标的ID号 nid.uFlags = NIF_ICON | NIF_TIP | NIF_INFO; //设置该图标的属性 nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME2)); // 这里可以改变图标 wcscpy(nid.szInfo, _T("提示")); wcscpy(nid.szInfoTitle, _T("系统重启了")); nid.uTimeout = 1000; nid.dwInfoFlags = NIIF_USER; wcscpy(nid.szTip,strTip); //鼠标停留在图标上显示的提示信息 Shell_NotifyIcon(NIM_MODIFY,&nid); // 修改托盘信息 }
删除托盘图标:
软件关闭时要删除图标
void OnDestroy() { //删除托盘图标 NOTIFYICONDATA notifyData; notifyData.cbSize = sizeof(notifyData); notifyData.hWnd = m_hWnd; notifyData.uID = IDR_MAINFRAME; notifyData.uFlags = 0; Shell_NotifyIcon(NIM_DELETE, ¬ifyData); // 删除托盘图标 }
VS2010的托盘程序中气泡不出现的解决办法:
原因在于VS2010对操作系统版本进行了重新定义,在这个头文件WinSDKVer.h中:
#ifndef _INC_WINSDKVER #define _INC_WINSDKVER #pragma once // This list contains the highest version constants supported by content in the Windows SDK. #define _WIN32_MAXVER 0x0601 #define _WIN32_WINDOWS_MAXVER 0x0601 #define NTDDI_MAXVER 0x0601 #define _WIN32_IE_MAXVER 0x0800 #define _WIN32_WINNT_MAXVER 0x0601 #define WINVER_MAXVER 0x0601 #endif把对应OS版本号0x0601全部修改为0x0501,重新编译。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了