MFC 托盘模式
来源:互联网 发布:中银e贷交易数据 编辑:程序博客网 时间:2024/05/18 22:44
为对话框程序增加托盘模式,左键双击托盘图标重新显示窗口,右键单击托盘图标显示下拉菜单,可点击关闭。
1,在对话框类的头文件中添加:
#define WM_NC WM_USER+1
#define IDI_NOTIFYICON 100
//添加成员函数
afx_msg LRESULT OnNotifyIcon(WPARAM wParam,LPARAM lParam);
void tray();
//添加成员变量
NOTIFYICONDATA NotifyIcon;
2,在类的源文件中实现两个成员函数:
LRESULT CBaiduAppStoreTestDlg::OnNotifyIcon(WPARAM wParam,LPARAM lParam){if (wParam == IDI_NOTIFYICON)//为创建的托盘图标 {switch(lParam)//消息的类型 {case WM_LBUTTONDBLCLK://双击左键{this->ShowWindow(SW_SHOWNORMAL); } break; case WM_RBUTTONDOWN://右击托盘,显示菜单 {LPPOINT lpoint=new tagPOINT;::GetCursorPos(lpoint);//得到鼠标位置CMenu menu;menu.CreatePopupMenu();//声明一个弹出式菜单menu.AppendMenu(MF_STRING,WM_DESTROY,L"close"); //确定弹出式菜单的位置 menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this); //资源回收 HMENU hmenu=menu.Detach(); menu.DestroyMenu(); delete lpoint; }break;}} return 0;}//创建及初始化托盘void CBaiduAppStoreTestDlg::tray(){NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);NotifyIcon.hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);NotifyIcon.hWnd=m_hWnd;NotifyIcon.uID = IDI_NOTIFYICON;lstrcpy(NotifyIcon.szTip,L"BaiduUserTestClient");NotifyIcon.uCallbackMessage=WM_NC;NotifyIcon.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;Shell_NotifyIcon(NIM_ADD,&NotifyIcon);}
3,注册消息:
ON_MESSAGE(WM_NC,OnNotifyIcon)
4,卸载托盘:
Shell_NotifyIcon(NIM_DELETE, &NotifyIcon);
5,托盘的调用:
如果需要程序运行时托盘一直出现,则在初始化函数中调用tray()即可。
如果要点击最小化按钮时转到托盘,则需在OnSysCommand()函数中拦截最小化事件:
if(nID==SC_MINIMIZE)
{
tray();
}
0 0
- MFC 托盘模式
- MFC托盘
- MFC添加托盘全过程
- MFC托盘处理
- mfc 托盘弹出气泡
- MFC托盘气泡
- MFC系统化托盘(转)
- MFC托盘图标
- MFC最小化到托盘
- MFC托盘图标编程
- MFC最小化到托盘
- MFC之托盘
- VC之托盘 MFC
- MFC托盘显示
- MFC托盘编程
- MFC托盘实例
- mfc 对话框 启动托盘
- MFC 托盘设计
- C++11 FAQ中文版:unique_ptr
- 常见数据面试题
- C++11 FAQ中文版:weak_ptr
- iframe父页面获取子页面的参数
- android:点击popupwindow以外区域 popupwindow自动消失
- MFC 托盘模式
- C++11 中值得关注的几大变化(详解)
- 2014.02.13 重构代码之注释习惯和风格
- Java数组
- MySQL 进程状态
- Android UI学习 - FrameLayou和布局优化
- php amqp 消息队列 RabbitMQ 安装(一)
- 趣文:如何向外行解释机器学习和数据挖掘
- POJ 2411 Mondriaan's Dream (状压DP)