zoukankan      html  css  js  c++  java
  • windows 气泡提示

    windows 气泡使用API Shell_NotifyIcon,首先需要使用Shell_NotifyIcon 的ADD添加一个通知icon,就是windows通知小窗口里面的小图标,之后再利用NIM_MOIDFY显示对应的气泡

    大致代码 AddNotificationIcon

    BOOL AddNotificationIcon(HWND hwnd)
    {
        NOTIFYICONDATA nid = {sizeof(nid)};
        nid.hWnd = hwnd;
        // add the icon, setting the icon, tooltip, and callback message.
        // the icon will be identified with the GUID
        nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE | NIF_SHOWTIP | NIF_GUID;
        nid.guidItem = __uuidof(SpiderIcon);
        //nid.uCallbackMessage = WMAPP_NOTIFYCALLBACK;
         
        LoadIconMetric(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_NOTIFICATIONICON), LIM_SMALL, &nid.hIcon);
        //LoadString(GetModuleHandle(NULL), IDS_TOOLTIP, nid.szTip, ARRAYSIZE(nid.szTip));
        std::wstring test = L"Spider";
         
        wcscpy(nid.szTip, test.c_str());
        //memcpy(nid.szTip, test.c_str(), test.size());
        Shell_NotifyIcon(NIM_ADD, &nid);
     
        // NOTIFYICON_VERSION_4 is prefered
        nid.uVersion = NOTIFYICON_VERSION_4;
        return Shell_NotifyIcon(NIM_SETVERSION, &nid);
    }

    ShowPrintJobBalloon

    BOOL ShowPrintJobBalloon()
    {
        // Display a balloon message for a print job with a custom icon
        NOTIFYICONDATA nid = {sizeof(nid)};
        nid.uFlags = NIF_INFO | NIF_GUID;
        nid.guidItem = __uuidof(SpiderIcon);
        nid.dwInfoFlags = NIIF_USER | NIIF_LARGE_ICON;
        std::wstring title = L"Spider集控";
        std::wstring szInfo = L"打扰了,收到来自集控的关机指令,将在您用完之后执行";
     
        //wcscpy(nid.szInfoTitle, title.c_str());
        wcscpy(nid.szInfo, szInfo.c_str());
        //LoadString(g_hInst, IDS_PRINTJOB_TITLE, nid.szInfoTitle, ARRAYSIZE(nid.szInfoTitle));
        //LoadString(g_hInst, IDS_PRINTJOB_TEXT, nid.szInfo, ARRAYSIZE(nid.szInfo));
        LoadIconMetric(g_hInst, MAKEINTRESOURCE(IDI_NOTIFICATIONICON), LIM_LARGE, &nid.hBalloonIcon);
        return Shell_NotifyIcon(NIM_MODIFY, &nid);
    }

    注意点:

    1. Notification需要一个唯一ID(再win7以及win7以上),第一次运行程序时会将这个uuid和你的应用程序绑定再一起(注意是和你的决定路径),你的exe如果路径变了UUID也需要变,即一个uuid对应着一个你的应用程序(绝对路径)
    2. 你的窗口可以是隐藏的,但是如果处在全屏模式或者投影等模式,windows将会自动开启专注助手以防止用户受打扰,所以再开启之后你的通知将不会显示,解决这个有两种方案,一将窗口显示出来,二是禁止专注助手。
  • 相关阅读:
    在HTML中使用JavaScript
    小强的HTML5移动开发之路(49)——HTML5开发神器HBuilder
    小强的HTML5移动开发之路(48)——(小练习)新闻订阅系统【1】
    QT学习记录之控件布局
    QT学习记录之理解信号槽机制
    小强的HTML5移动开发之路(47)——jquery mobile基本的页面框架
    Linux下MySQL备份以及crontab定时备份
    Linux管理日记(三)
    小强的HTML5移动开发之路(46)——汇率计算器【2】
    kindeditor实现ctrl+v粘贴word图片并上传
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/15028196.html
Copyright © 2011-2022 走看看