• Vc++2008托盘气泡程序


    新建一个MFC 对话框程序

    添加成员变量   NOTIFYICONDATA m_tnd;

    添加方法

    代码
    BOOL SetupTrayIcon(HWND hwnd)
    {
        
    //ZeroMemory(&m_tnd, sizeof(NOTIFYICONDATA));
        m_tnd.cbSize              = sizeof( NOTIFYICONDATA );
        m_tnd.hWnd              
    = hwnd;//this->GetSafeHwnd();//所在对话框窗口句柄
        m_tnd.uID              = IDR_MAINFRAME;
        m_tnd.uFlags              
    = NIF_MESSAGE | NIF_ICON | NIF_TIP;
        
    //m_tnd.dwInfoFlags      = NIIF_USER;

        m_tnd.uCallbackMessage 
    = WM_LBUTTONDBLCLK;  
        
    //m_tnd.uTimeout         = 3;
        m_tnd.hIcon                 = m_hIcon;//需要指定一个图标!这里是所在对话框的图标
        wcscpy_s(m_tnd.szTip,_T("我的任务栏程序"));
        
    return Shell_NotifyIcon( NIM_ADD, &m_tnd );
    }

    上面的代码新建一个图标在系统托盘处。

     当推出系统时删除托盘图标

    BOOL RemoveTrayIcon()
    {
        
    return Shell_NotifyIcon( NIM_DELETE, &m_tnd );
    }


    添加显示气泡方法

    代码
    BOOL ShowToolTip(LPCTSTR szMsg,LPCTSTR szTitle,DWORD dwInfoFlags,UINT uTimeout)
    {
        m_tnd.cbSize
    =sizeof(NOTIFYICONDATA);
        m_tnd.uFlags 
    = NIF_INFO;
        m_tnd.uVersion 
    = NOTIFYICON_VERSION;
        m_tnd.uTimeout 
    = uTimeout;
        m_tnd.dwInfoFlags 
    = dwInfoFlags;
        wcscpy_s( m_tnd.szInfoTitle, szTitle );
    //气泡标题
        wcscpy_s( m_tnd.szInfo,      szMsg     );//气泡内容
        
    //wcscpy_s( m_tnd.szTip,       _T("tip")       );
        SetTimer(11000, NULL);
        
    return Shell_NotifyIcon( NIM_MODIFY, &m_tnd );
    }

    为了让气泡消失,设置一个定时器,过一段时间将气泡的提示信息设为空。就能关闭气泡显示了。

    代码

    BOOL CloseToolTip()
    {
        m_tnd.cbSize
    =sizeof(NOTIFYICONDATA);
        m_tnd.uFlags 
    = NIF_INFO;
        wcscpy_s( m_tnd.szInfo,      _T(
    "")     );//气泡内容 设置为空即可取消气泡提示
        return Shell_NotifyIcon( NIM_MODIFY, &m_tnd );
    }


    void OnTimer(UINT_PTR nIDEvent)
    {
        
    // TODO: 在此添加控件通知处理程序代码
        KillTimer(nIDEvent);
        CloseToolTip();
    }


     调用方法:

    在OnInitDialog调用 SetupTrayIcon(m_hWnd);

    在OnClose里调用 RemoveTrayIcon

    在某个按钮事件里写ShowToolTip(_T("测试消息"), _T("测试"));

     注意:targetver.h需要修改如下2个定义:

    代码
    #ifndef WINVER                          // 指定要求的最低平台是 Windows Vista。
    //#define WINVER 0x0600           // 将此值更改为相应的值,以适用于 Windows 的其他版本。
    #define WINVER 0x0501 
    #endif

    #ifndef _WIN32_WINNT            
    // 指定要求的最低平台是 Windows Vista。
    //#define _WIN32_WINNT 0x0600     // 将此值更改为相应的值,以适用于 Windows 的其他版本。
    #define WINVER 0x0501 
    #endif


  • 相关阅读:
    这2天参加WinHEC大会,园子里以有很多介绍,就不多说了,会上用手机录了一段windows 最新触摸屏操作技术演示,可以看看
    自启动U盘,一个会流行的好玩意
    为什么数据库导入是自动增量属性自动消失乐呢?
    网络带宽利用率的一般计算方法
    防止ARP病毒的一个小窍门
    Windows 系统补丁管理策略
    PDC大会就要召开了,园里有去的吗,看到一片文章,不知道windows7是否真的很好
    门户框架在项目和产品中的使用心得
    这段时间开发了一个共享软件,主要做IP资源管理的(SmartIPView),大家有兴趣可以看看,或给指点指点
    OpenGL自学教程1(窗口建立)
  • 原文地址:https://www.cnblogs.com/likwo/p/1672870.html
Copyright © 2020-2023  润新知