c_cpp win32 trayicon
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp win32 trayicon相关的知识,希望对你有一定的参考价值。
#ifndef _TRAYICON_H_
#define _TRAYICON_H_
// 简单的支持气泡的 trayicon
// z4none@gmail.com
#include <ShellAPI.h>
#define WM_TRAYICON_NOTIFY (WM_USER + 8964)
//
class TrayIcon
{
int id;
HWND hwnd;
NOTIFYICONDATAA nid;
BOOL created;
public:
//
TrayIcon()
{
id = 8964;
created = false;
}
//
~TrayIcon()
{
if(created) Destroy();
}
//
BOOL Create(HWND parent_hwnd, HICON hicon)
{
hwnd = parent_hwnd;
nid.cbSize = sizeof(NOTIFYICONDATAA);
nid.hWnd = hwnd;
nid.uID = id;
nid.uFlags = NIF_ICON| NIF_TIP| NIF_MESSAGE| NIF_INFO;
nid.uCallbackMessage = WM_TRAYICON_NOTIFY;
nid.hIcon = hicon;
nid.szTip[0] = 0;
nid.szInfo[0] = 0;
nid.szInfoTitle[0] = 0;
nid.dwInfoFlags = 0x00000004;
nid.uTimeout = 15000;
created = Shell_NotifyIconA(NIM_ADD, &nid);
return created;
}
//
void Destroy()
{
created = false;
Shell_NotifyIconA(NIM_DELETE, &nid);
}
//
BOOL ChangeIcon(HICON hicon)
{
nid.hIcon = hicon;
return Shell_NotifyIconA(NIM_MODIFY, &nid);
}
//
BOOL ShowMessage(const char * message=NULL, const char * caption=NULL)
{
if(caption) strcpy_s(nid.szInfoTitle, sizeof(nid.szInfoTitle), caption);
else nid.szInfoTitle[0] = 0;
if(message) strcpy_s(nid.szInfo, sizeof(nid.szInfo), message);
else nid.szInfo[0] = 0;
BOOL Ret = Shell_NotifyIconA(NIM_MODIFY, &nid);
// 只显示一次
nid.szInfoTitle[0] = 0;
nid.szInfo[0] = 0;
return Ret;
}
//
BOOL Created()
{
return created;
}
};
#endif // _TRAYICON_H_
以上是关于c_cpp win32 trayicon的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp linux ln链接到win32 mklink链接
c_cpp 在win32 gui应用程序中创建一个控制台窗口
XE下显示托盘图标(TrayIcon)
Nodejs - 小型 Express 服务器 + trayicon + pkg
Java 类 TrayIcon,通知消息。如何用自定义声音替换系统声音?
java TrayIcon使用具有透明背景的图像