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使用具有透明背景的图像