经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Windows » 查看文章
c++ win32下窗口的最小化到托盘以及还原
来源:cnblogs  作者:YZHuang  时间:2019/11/7 20:35:09  对本文有异议

  框架是用visual studio创建的win32控制台模板,然后自己添加最小化及还原部分代码。

  需要额外包含的头文件:

  1. #include <shellapi.h>
  2. #include <WinUser.h>

  方式是在托盘区创建图标,隐藏主窗口。

  托盘创建图标:

  1. void ToTray(HWND hWnd)
  2. {
  3. NOTIFYICONDATA nid;
  4. nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
  5. nid.hWnd = hWnd;
  6. nid.uID = IDR_MAINFRAME;
  7. nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
  8. nid.uCallbackMessage = WM_TO_TRAY;//自定义的消息 处理托盘图标事件
  9. nid.hIcon = LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(IDI_SMALL));
  10. wcscpy_s(nid.szTip, _T("自定义程序名"));//鼠标放在托盘图标上时显示的文字
  11. Shell_NotifyIcon(NIM_ADD, &nid);//在托盘区添加图标
  12. }

  关闭软件时需要销毁托盘区的图标,不然鼠标划过才会消失:

  1. void DeleteTray(HWND hWnd)
  2. {
  3. NOTIFYICONDATA nid;
  4. nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
  5. nid.hWnd = hWnd;
  6. nid.uID = IDR_MAINFRAME;
  7. nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
  8. nid.uCallbackMessage = WM_TO_TRAY;//自定义的消息名称 处理托盘图标事件
  9. nid.hIcon = LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(IDI_SMALL));
  10. wcscpy_s(nid.szTip, _T("自定义程序名"));//鼠标放在托盘图标上时显示的文字
  11. Shell_NotifyIcon(NIM_DELETE, &nid);//在托盘中删除图标
  12. }

  最小化的时候去隐藏窗口需要捕捉最小化的消息,这个消息在处理WM_SIZE时,wParam参数为SIZE_MINIMIZED。

  窗口关闭时销毁托盘:

 

 

   双击托盘图标还原窗口:

 

 

 SetForegroundWindow(hWnd);这个函数是为了让窗口在前端显示。

原文链接:http://www.cnblogs.com/yzhuang/p/11806823.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号