编程实现最小化窗口到桌面右下角图标的代码

简介:
//***********************************************************
//函数名称 : ToTray
//函数功能 : 最小化到系统托盘
//输入参数 : 
//输出参数 : 
//返回代码 : 
//***********************************************************
//本地注释 : 
//***********************************************************
void CBackupUIDlg::ToTray()
{
 nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);// 结构的长度,用“位”来做单位。
 nid.hWnd = this->m_hWnd;//消息传送的窗口句柄
 nid.uID = IDR_MAINFRAME;//在工程中定义的图标ID
 nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;  
 nid.uCallbackMessage = WM_SHOWTASK;//自定义的消息名称  
 nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));  
 _tcscpy_s(nid.szTip,sizeof(nid.szTip)+1,_T("备份客户端"));//信息提示条为“备份客户端”
 Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标  
 ShowWindow(SW_HIDE);//隐藏主窗口   
}
//**************************************************************
//函数名称 : onShowTask
//函数功能 : 托盘事件回调函数
//输入参数 : 
//输出参数 : 
//返回代码 : 
//**************************************************************
//本地注释 : 
//**************************************************************
LRESULT CBackupUIDlg::onShowTask(WPARAM wParam,LPARAM lParam)
{
 if(wParam!=IDR_MAINFRAME) return 1;  
 switch(lParam)   
 {   
 case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”   
  {      
   LPPOINT lpoint=new tagPOINT;  
   ::GetCursorPos(lpoint);//得到鼠标位置
   CMenu menu;  
   //载入事先定义的菜单
   VERIFY(menu.LoadMenu(IDR_MENU_TRAY));
   CMenu *pMenu = (CMenu *)(menu.GetSubMenu(0));
   ASSERT(pMenu != NULL);
   //确定弹出式菜单的位置   
   pMenu->TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this); 
   //资源回收   
   HMENU hmenu=menu.Detach();  
   menu.DestroyMenu(); delete lpoint;   
  }   
  break; 
 case WM_LBUTTONDBLCLK://双击左键的处理   
  {   
   this->ShowWindow(SW_SHOW);//简单的显示主窗口完事儿   
  }
  break;   
 }   
 return   0;  
}
/*********************************************/
/*                    最小化到托盘后点击右键退出                        */
/*********************************************/
void CBackupUIDlg::OnExit()
{
 ::PostQuitMessage(0);
}


本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/188136,如需转载请自行联系原作者
相关文章
|
存储 Windows
怎样格式化硬盘?四种硬盘格式化方法(含详细图文步骤)
这篇内容介绍了硬盘格式化的方法,包括为何要格式化硬盘(如快速清空数据、建立新分区、修复错误、改变文件系统类型)和四种格式化方式:1) 使用文件管理器,2) 通过磁盘管理器,3) 利用分区工具DiskGenius,4) 使用diskpart命令。在执行格式化前,务必备份重要数据,因为格式化会导致数据丢失。
|
搜索推荐 前端开发 数据安全/隐私保护
改善用户体验方法
【10月更文挑战第9天】改善用户体验方法
1197 3
|
运维 负载均衡 算法
Nacos必知必会:这些知识点你一定要掌握!
Nacos必知必会:这些知识点你一定要掌握!
1829 0
|
数据采集 数据挖掘
大数据分析《流浪地球》
大数据分析《流浪地球》
大数据分析《流浪地球》
|
机器学习/深度学习 存储 传感器
【汉字识别】基于模板匹配实现汉字精准识别附Matlab代码
【汉字识别】基于模板匹配实现汉字精准识别附Matlab代码
|
监控 关系型数据库 MySQL
linux下安装zabbix服务器shell脚本-添加主机-邮件监控报警zabbix-自动化运维
分布式网络监控平台;分为手动和自动安装,添加主机-邮件监控报警zabbix
1071 0
[Papers]MHD, $\p_3\pi$, Lebesgue space [Zhang-Li-Yu, JMAA, 2013]
$$\bex \p_3\pi\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=2,\quad \frac{3}{2}\leq q\leq 3. \eex$$
651 0
MSP430常见问题之复位系统类
Q1:请问msp430 怎么手动复位啊?是不是连到RST/NMI 上?但是这个脚不是和JTAG 连吗?我看到一些资料上说复位的话还要上拉电阻或者复位电路。A1:JTAG 功能只在下载程序时候使用,正常工作中RST可以连接一个按键,按下按键实现430手动复位。
|
20小时前
|
云安全 人工智能 自然语言处理