ZBLOG

Shell_NotifyIcon 使用案例,案例中要有设置图标功能,图标来源与具体路径下的图片

以下是一个使用 Shell_NotifyIcon 的示例,用于设置系统托盘图标,并从指定路径加载图标文件。

#include <windows.h>

// 函数声明
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int main()
{
    // 创建窗口
    HWND hwnd;
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WindowProc, 0L, 0L,
                      GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
                      "NotificationWindow", NULL };
    RegisterClassEx(&wc);
    hwnd = CreateWindow(wc.lpszClassName, "Notification Window",
                        WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
                        CW_USEDEFAULT, 500, 500,
                        NULL, NULL, wc.hInstance, NULL);

    // 设置系统托盘图标
    NOTIFYICONDATA nid = { sizeof(NOTIFYICONDATA) };
    nid.hWnd = hwnd;
    nid.uID = 1;  // 托盘图标唯一ID
    nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
    nid.uCallbackMessage = WM_USER + 1;   // 回调消息

    // 加载图标文件并设置为托盘图标
    HICON hIcon = (HICON)LoadImage(NULL,"C:\\Path\\To\\Icon.ico", IMAGE_ICON,
                                   GetSystemMetrics(SM_CXSMICON),
                                   GetSystemMetrics(SM_CYSMICON),
                                   LR_LOADFROMFILE | LR_DEFAULTSIZE | LR_SHARED);
    if (hIcon)
        nid.hIcon = hIcon;

    strcpy(nid.szTip,"Tooltip Text");     // 鼠标悬停时的提示文本

    Shell_NotifyIcon(NIM_ADD, &nid);   // 将图标添加到系统托盘

    // 消息循环
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    // 清理并移除托盘图标
    Shell_NotifyIcon(NIM_DELETE, &nid);
    DestroyWindow(hwnd);
    
    return 0;
}

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg,
                            WPARAM wParam, LPARAM lParam)
{
   if (uMsg == WM_DESTROY)
   {
      PostQuitMessage(0);
      return 0;
   }
   
   if (uMsg == WM_USER + 1)  // 自定义回调消息处理
   {
       // 处理自定义操作,例如点击托盘图标时的行为
       return 0;
   }

   return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

上述代码中,你需要将 C:\\Path\\To\\Icon.ico 替换为具体的图标文件路径。此示例会创建一个窗口,并将指定路径下的图标文件设置为系统托盘图标。你可以根据需要在 WindowProc 函数中添加自定义行为和响应。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=10332

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?