1 在头文件里面定义 消息

  1. #define WM_SHOWTASK WM_USER+10

在主窗口类里面定义 一个变量 两个函数

  a 变量 托盘结构体的变量

  1. NOTIFYICONDATA m_nid;

  b 初始化上述变量的函数

  1. void ToTray(void);

  c 托盘的消息处理函数

  1. LRESULT onShowTask(WPARAM wParam,LPARAM lParam);

2 在cpp里面 添加一下内容

  a 在BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 之间添加映射消息

  1. ON_MESSAGE(WM_SHOWTASK,onShowTask)

  b 在初始化函数托盘结构体 初始化的函数

  1. ToTray();

  c  添加 托盘结构体 初始化

  1. void CNotifyiconTestDlg::ToTray(void)
  2. {
  3.  
  4. m_nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
  5. m_nid.hWnd = this->m_hWnd;
  6. m_nid.uID = IDR_MAINFRAME;
  7. m_nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP ;
  8. m_nid.uCallbackMessage = WM_SHOWTASK;
  9. //自定义的消息名称 WM_SHOWTASK 头函数中定义为WM_USER+10
  10. m_nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
  11. StrCpyW(m_nid.szTip,L"托盘图标");//当鼠标放在上面时,所显示的内容
  12. Shell_NotifyIcon(NIM_ADD,&m_nid);//在托盘区添加图标
  13. }

  d 消息处理函数的实现

  1. LRESULT CNotifyiconTestDlg::onShowTask(WPARAM wParam,LPARAM lParam) //wParam接收的是图标的ID,lParam接收的是鼠标的行为
  2. {
  3. if(wParam!=IDR_MAINFRAME)
  4. return 1;
  5. switch(lParam)
  6. {
  7. case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”
  8. {
  9. LPPOINT lpoint=new tagPOINT;
  10. ::GetCursorPos(lpoint);//得到鼠标位置
  11. CMenu menu;
  12. menu.CreatePopupMenu();//声明一个弹出式菜单
  13. //增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已
  14. //隐藏),将程序结束。
  15. menu.AppendMenu(MF_STRING,WM_DESTROY,L"退出");
  16. //确定弹出式菜单的位置
  17. menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);
  18. //资源回收
  19. HMENU hmenu=menu.Detach();
  20. menu.DestroyMenu();
  21. delete lpoint;
  22. }
  23. break;
  24. case WM_LBUTTONDBLCLK://双击左键的处理
  25. {
  26. this->ShowWindow(SW_SHOWNORMAL);//简单的显示主窗口
  27. }
  28. break;
  29. }
  30. return 0;
  31. }

  

  注 :可以把ToTray 函数去掉,把函数内容放到初始化里面

mfc 对话框程序 托盘实现的更多相关文章

  1. MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法

    http://blog.csdn.net/xgx198831/article/details/6713651 MFC对话框程序  屏蔽ESC和ENTER键关闭对话框的方法 或许还有其它更好的办法,但下 ...

  2. OSG+MFC对话框程序

    OSG的sample里面有OSG+MFC+MDI的例子. 网上有说OSG+MFCSDI的例子,如http://blog.csdn.net/xuguangsoft/article/details/816 ...

  3. VC++MFC对话框程序中给对话添加背景图片

    VC对话框怎么显示背景图片呢.在MFC中实现背景图片,不像C#应用程序那么简单.今天就和朋友们说说如何在VC界面中设置背景图片 ^_^   工具/原料 Visual C++ 2010 方法一:用Pic ...

  4. VS2010 MFC对话框程序用CButtonST给按钮添加图标

    也许是VS版本的关系,CButtonST中的BCMenu两个文件是无法编译通过的.   1.拷贝下载的CButtonST(我下载的v3.9)中的BtnST.h和BtnST.cpp文件到自己项目目录下. ...

  5. 添加RichEdit控件后导致MFC对话框程序无法运行的解决方法

    新建一个基于对话框的MFC程序,对话框上添加了RichEdit控件,编译成功后无法运行起来,Debug版本与Release版本均不行! Windbg分析结果: WARNING: Stack unwin ...

  6. MFC对话框程序EDIT类控件的自动换行,垂直滚动条自动下移

    1.新建一个Edit Control,将其Multiline属性设置为True,Auto HScroll属性设置False,这样就可以实现每一行填满后自动换行了.   2.再将Vetrical Scr ...

  7. 【MFC - 菜单】在对话框程序中添加菜单栏(CMenu)(转)

    原文转自 http://lishiqiang1988.blog.163.com/blog/static/41147912201382104631547/ VS2010的MFC对话框程序中添加菜单栏的过 ...

  8. 在c++MFC下用PCL显示操作点云文件 MFC对话框显示操作PCL点云

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/13115873.html 第一步 下载PCL库  我的版本是1.8.1的 你都要MFC下跑PCL ...

  9. MFC模态对话框程序不响应OnIdle

    从代码分析原因吧: OnIdle函数在MFC的CWinThread::Run函数中被调用,如下 // main running routine until thread exits int CWinT ...

随机推荐

  1. Powershell - 获取OS版本信息和catpion信息

    Environment  获取 OSversion: $OSVersion = [System.Environment]::OSVersion.Version WMI获取Caption: $OSCap ...

  2. Java并发编程(七):线程安全策略

    Java多线程——不可变对象 Java多线程——线程封闭 java线程不安全类与写法 Java线程安全同步容器 Java里的并发容器与安全共享策略总结

  3. 深入Activity

    此刻,你应该静下心来,在阅读中思考.在思考中进步,读完本篇文章的你一定会有不一样的收获,请让我们共同进步! 核心内容 1.Activity数据交换 2.Activity中的任务栈 3.Activity ...

  4. 解决Ubuntu下博通网卡驱动问题

    sudo apt-get install bcmwl-kernel-source我的无线网卡是BCM4312 802.11b/g 在12.04 会集成驱动,装完就能用,现在用14.04,16.04里面 ...

  5. 图解PCIE原理(从软件角度)

    1  PCIE基本概念 1.1   PCIE拓扑架构图 1.2 PCIE Switch内部结构图 1.3  PCIE协议结构图 2 PCIE枚举原理 2.1 Type0&Type1配置头空间 ...

  6. JS高程3:Ajax与Comet-进度事件、跨源资源共享

    有以下 6 个进度事件  loadstart:在接收到响应数据的第一个字节时触发.  progress:在接收响应期间持续不断地触发.  error:在请求发生错误时触发.  abort:在因 ...

  7. poj 3617 Best Cow Line (字符串反转贪心算法)

    Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9284   Accepted: 2826 Des ...

  8. dbutils使用---QueryRunner、BeanListHandler、BeanHandler、MapListHandler、MapHandler、ScalarHandler

    1. ResultSetHandler 的作用: QueryRunner 的 query 方法的返回值最终取决于 query 方法的 ResultHandler 参数的 hanlde 方法的返回值. ...

  9. linux学习笔记14--命令which和whereis

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:        which  查看可执行文件的位置.       whereis 查看文件的位置.         ...

  10. NGUI本地化

    之前在网上的NGUI本地化教程是基于老版本的了,现在用的3.7版本已经改了很多,以前的本地化教程有点不适用了. 1.资源: 本地化的txt文本起名叫做Chinese.txt,到resource目录下新 ...