MFC程序最小化到系统托盘

1.声明一个NOTIFYICONDATA类:

NOTIFYICONDATA NotifyIcon;

2.声明一个函数,用于响应鼠标操作:

afx_msg LRESULT OnNotifyIcon(WPARAM wParam,LPARAM IParam);

该函数定义代码:

LRESULT CtestDlg::OnNotifyIcon(WPARAM wParam,LPARAM IParam)
{   //如果鼠标左键托盘单击图标,则显示MFC程序
    if (IParam == WM_LBUTTONDOWN)
    { 
         ModifyStyleEx(0,WS_EX_TOPMOST);
         ShowWindow(SW_SHOW);                            //显示MFC程序
         Shell_NotifyIcon(NIM_DELETE, &NotifyIcon);      //删除系统托盘图标
    }else if(IParam == WM_RBUTTONDOWN)                   //鼠标右键单击托盘图标,则显示一个菜单
    {
        CMenu menu;
        menu.LoadMenu (IDR_MENU1);                       //加载菜单资源
        CMenu* pContextMenu = menu.GetSubMenu (0);       //取得指向menu菜单索引为0的子菜单的指针
        POINT point;
        GetCursorPos(&point);                            //取得鼠标坐标
  //显示菜单
        pContextMenu->TrackPopupMenu (TPM_LEFTALIGN | TPM_LEFTBUTTON |
            TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd ());
    }
 
    return LRESULT(0);
}

记得要定义一个菜单资源IDR_MENU1!

3.定义消息名称和消息号:

#define WM_NOTIFYICON (WM_USER+1001)

注册,在BEGIN_MESSAGE_MAP(Dlg,CDialog)和END_MESSAGE_MAP()之间添加:

ON_MESSAGE(WM_NOTIFYICON,OnNotifyIcon)

4.在要将MFC程序最小化到系统托盘的函数中添加以下代码:

NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);
NotifyIcon.hIcon=AfxGetApp()->LoadIcon(IDR_ICON1);      //加载图标,IDR_ICON1是图标资源的ID
NotifyIcon.hWnd=m_hWnd;
lstrcpy(NotifyIcon.szTip,_T("Test"));
NotifyIcon.uCallbackMessage=WM_NOTIFYICON;
NotifyIcon.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon(NIM_ADD,&NotifyIcon);                  //显示托盘图标
 
//隐藏MFC程序窗体
ShowWindow(SW_HIDE);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值