您的位置:首页 > 运维架构 > Shell

MFC中给应用程序添加托盘支持

2010-11-03 16:25 393 查看
是从网上找的,经过亲身实践,并且结合一些小修改,把这个过程整理出来(开发环境是vs2005):
 

1:首先在Dlg.h中添加函数
 

// 响应托盘图标事件
afx_msg LRESULT OnNotifyIcon(WPARAM wParam,LPARAM IParam);

 

2:在Dlg.h中添加成员变量
 

// 进行托盘图标显示支持的类结构
NOTIFYICONDATA NotifyIcon;

3:在Dlg.cpp中添加(这句话要添加在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间)
 
ON_MESSAGE(WM_NC, OnNotifyIcon)


 

// 添加托盘显示支持
NotifyIcon.cbSize = sizeof(NOTIFYICONDATA);
NotifyIcon.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
NotifyIcon.hWnd = m_hWnd;
lstrcpy(NotifyIcon.szTip, TEXT("托盘显示"));
NotifyIcon.uCallbackMessage = WM_NC;
NotifyIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon(NIM_ADD, &NotifyIcon);


5:在Dlg.cpp中添加代码

 
// 响应托盘图标事件
LRESULT CMFC_4Dlg::OnNotifyIcon(WPARAM wParam, LPARAM IParam)
{
if ((IParam == WM_LBUTTONDOWN) || (IParam == WM_RBUTTONDOWN))
{
ModifyStyleEx(0, WS_EX_TOPMOST);
ShowWindow(SW_SHOW);
}
return NULL;
}


6:在OnSysCommand函数中,添加

else if ((nID & 0xFFF0) == SC_MINIMIZE)
{
// 点击最小化按钮的时候进行事件处理
ShowWindow(SW_HIDE);
}


最后当程序退出的时候添加这句话:

Shell_NotifyIcon(NIM_DELETE, &NotifyIcon);


意思是让托盘图标也消失,而不是鼠标放上去才消失的

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mfc delete shell null