1.***dlg.h头文件设置:

1)public:

void setTray();//设置托盘
   NOTIFYICONDATA nid;//NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息

2)protected:

// Generated message map functions
   //{{AFX_MSG(C***Dlg)
   afx_msg LRESULT onShowTask(WPARAM wParam,LPARAM lParam);

//}}AFX_MSG

2.***dlg.cpp实现设置:

1) #define WM_SHOWTASK (WM_USER + 1)  //设置响应消息

2) BEGIN_MESSAGE_MAP(C***Dlg, CDialog)
   //{{AFX_MSG_MAP(C***Dlg)
  ON_MESSAGE(WM_SHOWTASK,onShowTask)

//}}AFX_MSG_MAP
  END_MESSAGE_MAP()

3)最小化菜单响应

void C***Dlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if(nID==SC_MINIMIZE)
        {
             setTray();//最小化到托盘
         }

}

4)托盘函数

void C***Dlg::setTray()
{
 nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
 nid.hWnd=this->m_hWnd;
 nid.uID=IDR_MAINFRAME;
 nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP;
 nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称
 nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
 strcpy(nid.szTip,"ClientTracer"); //信息提示条
 Shell_NotifyIcon(NIM_ADD,&nid); //在托盘区添加图标
 ShowWindow(SW_HIDE); //隐藏主窗
}

5)消息函数

LRESULT C***Dlg::onShowTask(WPARAM wParam,LPARAM lParam)
{
 //wParam接收的是图标的ID,而lParam接收的是鼠标的行为
 if(wParam!=IDR_MAINFRAME) return 1;
 switch(lParam)
 {
  case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”
  {
   LPPOINT lpoint=new tagPOINT;
   ::GetCursorPos(lpoint);//得到鼠标位置
   CMenu menu;
   menu.CreatePopupMenu();//声明一个弹出式菜单
   //增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口,将程序结束。
   menu.AppendMenu(MF_STRING,WM_DESTROY,"退出");
   //确定弹出式菜单的位置
   SetForegroundWindow();//弹出菜单失去焦点后自动消失
   menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);
   //资源回收
   HMENU hmenu=menu.Detach();
   menu.DestroyMenu();
   delete lpoint;
  }
  break;
  case WM_LBUTTONDBLCLK://双击左键的处理
  {
   Shell_NotifyIcon(NIM_DELETE,&nid);//删除托盘图标
   ShowWindow(SW_SHOWNORMAL);//显示主窗口
   //this->SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);//使窗口总是在最前面
  }
  break;
 }
 return 0;
}

6)继承WM_DESTROY:

void C***Dlg::OnDestroy()
{
 CDialog::OnDestroy();
 
 // TODO: Add your message handler code here
 Shell_NotifyIcon(NIM_DELETE,&nid); //退出程序后删除托盘图标
}

3.说明:代码均是添加到现有MFC框架代码!

VC对话框最小化到托盘相关推荐

  1. VC++中把一个对话框最小化到托盘

    转自:http://zhidao.baidu.com/question/39126833.html 一.托盘简介 所谓的"托盘",在Windows系统界面中,指的就是下面任务条右侧 ...

  2. VC++中把一个对话框最小化到托盘[转载]

    From: http://hi.baidu.com/maxlcl/blog/item/61e83c87de35e529c65cc3e0.html 一.托盘简介 所谓的"托盘",在W ...

  3. VC实现将对话框最小化到系统托盘

    1.minisysDlg.h头文件设置: 1)public: void setTray();//设置托盘    NOTIFYICONDATA nid;//NOTIFYICONDATA结构包含了系统用来 ...

  4. 实现 VC 最小化到 托盘

    大家经常看到 程序 最小化到 托盘 但用C怎么实现呢 本人 试下哈 可以实现的 ~·~ main.cpp 修改如下 #define WM_CLICKBIT (WM_USER + 1) //定义消息 H ...

  5. delphi 关闭时缩小到托盘_delphi 实现最小化系统托盘

    1.new -->application 2.在form1中加入一个tPopMenu 命名为pm1 3.uses ShellAPI; 4.定义一个常量在 const WM_TRAYMSG = W ...

  6. VC按最小化、关闭按钮、Esc都隐藏主窗口

    VC按最小化.关闭按钮.Esc键都隐藏主窗口,在托盘处程序图标的右键菜单中点击,显示主窗口. 1. 按最小化时隐藏主窗口:为窗口添加WM_SIZE消息响应函数 void CdDlg::OnSize(U ...

  7. MFC窗口最小化到托盘

    把程序放到托盘上的本质就是先在托盘区绘制一个图标,然后把程序隐藏不见,再对托盘的图标进行消息处理,就可以了.绘制图标以及确定图标所传送消息的函数只有一个,那就是  WINSHELLAPI BOOL W ...

  8. 【pyqt5学习】——窗口最小化至托盘、取消任务栏图标

    目录 1.最小化至托盘 1)重写系统托盘类,设置托盘图标等属性 2)将具体的窗口放入托盘 2.取消任务栏界面图标 3.问题汇总 1)退出后托盘图标还是存在,没有消失 2)最小化后左下角会出现 窗口 3 ...

  9. 【VS开发】最小化到托盘 shell_notifyicon和NOTIFYICONDATA

    shell_notifyicon和NOTIFYICONDATA Shell_NotifyIcon函数,向任务栏的状态栏发送一个消息 函数原型 BOOL Shell_NotifIcon( DWORD d ...

最新文章

  1. WaitForSingleObject和WaitForMultipleObjects用法
  2. matlab 格式化文件,格式化matlab文件01_新建普通文件
  3. 手机qq显示鸿蒙在线,手机QQ显示对方朋友网络状态是“手机在线”是什么意思,明明对方是WiFi在线,怎么显示的是手机在线...
  4. 信息抽取(一)机器阅读理解——样本数据处理与Baseline模型搭建训练(2020语言与智能技术竞赛)
  5. halcon/c++接口基础 之 控制参数
  6. Linux kernel中常见的宏整理
  7. 复旦大学提出《Meta-FDMixup》解决跨域小样本学习中的域偏移问题
  8. 薛家德(帮别人名字作诗)
  9. 有趣的mysql string和0比较返回1的问题
  10. Java Date总结
  11. 【UCSC Genome Browser】- Genes and Gene Predictions - NCBI RefSeq
  12. 【物联网毕设基础】单片机:红外遥控通信原理
  13. 黎曼Zeta函数,人类文明黎曼Zeta函数,人类文明永恒的的纪念
  14. html怎么设置div只读,html怎么设置只读状态
  15. 一段代码之仿LOL移动方式
  16. KSO-.NETCore中配置swagger分级
  17. ZYNQ7010 CAN的官方例程改为XCANPS_MODE_NORMAL模式,程序没跑通
  18. 在线课程推荐(国外篇)
  19. Leecode 刷题归纳(Python——LeetCode 精选 TOP 面试题)
  20. 官网下载eclipse被墙、无法访问解决

热门文章

  1. 导致溢出_由整数类型溢出导致的英雄联盟峡谷惨案
  2. mysql递归查询所有上下节点_【转】MySQL之Spider存储引擎原理详解
  3. BZOJ4810: [Ynoi2017]由乃的玉米田
  4. [C#]关于Access的“INSERT INTO 语句的语法错误”问题
  5. gym-101343K-Counting Time
  6. 单链表的前K个的逆序输出
  7. Redis的三种启动方式【转】
  8. 转自CSDNattilax的专栏 :自适应网页设计 跟 响应式 设计的区别跟原理and实践总结...
  9. magento 修改产品类型的方法 change product type
  10. Ubuntu18.04安装Gaussian16和GaussView 6