系统托盘

像QQ一样在任务栏右边通知区域显示小图标:

 

实现函数:

BOOL Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATA lpdata)

 

处理消息:

1、自定义消息,消息处理函数(回调函数)。回调函数中处理对通知区域小图标的事件,如左键单击小图标(WM_LBUTTONDOWN)、右键单击小图标(WM_RBUTTONDOWN),左键双击小图标(WM_LBUTTONDBLCLK)。

2、处理主窗体的OnSysCommand(UINT nID, LPARAM lParam),nID的含义:SC_CLOSE(点击右上角关闭图标)、SC_MINIMIZE(点击右上角最小化图标)等等。

3、处理OnCommand(WPARAM wParam, LPARAM lParam),通常右键单击通知区域的小图标都会弹出功能菜单,菜单项的命令在主窗体的OnCommand中处理。

 

具体实例:(对话框模式)

1、添加自定义消息

     #define NOTIFYICONTRAY WM_USER + 1

     添加消息成员函数

    afx_msg LRESULT OnNotifyIconTray(WPARAM wParam, LPARAM lParam);

    添加消息映射

    ON_MESSAGE(NOTIFYICONTRAY, OnNotifyIconTray)

 

2、在主对话框添加成员:NOTIFYICONDATA m_NotifyIconData;在OnInitDialog()中初始化这个成员:

m_NotifyIconData.cbSize = sizeof(NOTIFYICONDATA);
m_NotifyIconData.hWnd = this->m_hWnd;
m_NotifyIconData.uID = IDR_MAINFRAME;//LoadIcon的ID,在回调函数中提供判断
m_NotifyIconData.uFlags = NIF_ICON|NIF_TIP|NIF_MESSAGE;
m_NotifyIconData.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//显示在通知区域中的图标的句柄
wcscpy(m_NotifyIconData.szTip, L"NotifyIcon");//显示的TIP信息
m_NotifyIconData.uCallbackMessage = NOTIFYICONTRAY;//自定义消息

 

Shell_NotifyIcon(NIM_ADD, &m_NotifyIconData);在OnInitDialog()中添加这句,可以是程序在运行的时候就在通知区域显示小图标。

 

3、当点击关闭图标和最小化图标时隐藏对话框,在OnSysCommand中添加如下代码:

switch (nID)
    {
    case SC_CLOSE:

    case SC_MINIMIZE:
        ShowWindow(SW_HIDE);
        return;
    default:
        CDialog::OnSysCommand(nID, lParam);

    }

 

4、双击通知区域图标显示对话框,右键单击该图标退出,OnNotifyIconTray函数:

OnNotifyIconTray(WPARAM wParam, LPARAM lParam)
{
    if (wParam != m_NotifyIconData.uID)
    {
        return 0;
    }

    switch (lParam)
    {
    case WM_LBUTTONDBLCLK:
        ShowWindow(SW_SHOW);
        break;
    case WM_RBUTTONDOWN:

        SendMessage(WM_CLOSE);

        break;
    default:
        return 0;
    }

    return 1;
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值