c++ win32下窗口的最小化到托盘以及还原
框架是用visual studio创建的win32控制台模板,然后自己添加最小化及还原部分代码。
需要额外包含的头文件:
#include <shellapi.h>
#include <WinUser.h>
方式是在托盘区创建图标,隐藏主窗口。
托盘创建图标:
void ToTray(HWND hWnd)
{
NOTIFYICONDATA nid;
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd = hWnd;
nid.uID = IDR_MAINFRAME;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.uCallbackMessage = WM_TO_TRAY;//自定义的消息 处理托盘图标事件
nid.hIcon = LoadIcon(GetModuleHandle(), MAKEINTRESOURCE(IDI_SMALL));
wcscpy_s(nid.szTip, _T("自定义程序名"));//鼠标放在托盘图标上时显示的文字
Shell_NotifyIcon(NIM_ADD, &nid);//在托盘区添加图标
}
关闭软件时需要销毁托盘区的图标,不然鼠标划过才会消失:
void DeleteTray(HWND hWnd)
{
NOTIFYICONDATA nid;
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd = hWnd;
nid.uID = IDR_MAINFRAME;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.uCallbackMessage = WM_TO_TRAY;//自定义的消息名称 处理托盘图标事件
nid.hIcon = LoadIcon(GetModuleHandle(), MAKEINTRESOURCE(IDI_SMALL));
wcscpy_s(nid.szTip, _T("自定义程序名"));//鼠标放在托盘图标上时显示的文字
Shell_NotifyIcon(NIM_DELETE, &nid);//在托盘中删除图标
}
最小化的时候去隐藏窗口需要捕捉最小化的消息,这个消息在处理WM_SIZE时,wParam参数为SIZE_MINIMIZED。
窗口关闭时销毁托盘:
双击托盘图标还原窗口:
SetForegroundWindow(hWnd);这个函数是为了让窗口在前端显示。
c++ win32下窗口的最小化到托盘以及还原的更多相关文章
- MFC窗口实现最小化到托盘 右键菜单和还原
//.h文件 void toTray();//最小化到托盘 void DeleteTray();//删除托盘图标 afx_msg LRESULT OnShowTask(WPARAM wParam,LP ...
- WPF实现窗口最小化到托盘,并且实现右击菜单
原版是从网上找了一位大神的,自己只是用了一点适合自己的. 具体实现 1.首先已经确认WPF中没有实现最小化托盘的类与方法,用到了winform中的程序集 using Drawing = System. ...
- Ubuntu 16.04 启用 点击Launcher图标,窗口实现最小化 功能
安装了Ubuntu之后,要是每次都点击最小化按钮来实现窗口的最小化,操作起来很不方便,那么怎么样才能方便操作呢, Ubuntu 16.04 本身支持 点击应用程序Launcher图标实现最小化 功能, ...
- WinForm 之 窗口最小化到托盘及右键图标显示菜单
Form最小化是指整个Form都缩小到任务栏上,但是窗体以Form的标题栏形式显示在任务栏上, 若是想让Form以Icon的形式显示在任务栏右下角,则需要给Form添加一个NotifyIcon控件. ...
- delphi 函数isiconic 函数 判断窗口是否最小化
http://blog.sina.com.cn/s/blog_66357ab901012t2h.html delphi 函数isiconic 函数 判断窗口是否最小化 (2012-05-26 22:0 ...
- Electron 无边框窗口最大化最小化关闭功能
Electron 无边框窗口最大化最小化关闭功能 目的 实现无边框窗口,并添加最大化最小化和关闭功能 前提 了解Electron 主进程和渲染进程的通讯 了解 BrowserWindow相关功能 操作 ...
- C#窗口实现最小化到系统托盘
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- VC++ 最小化到托盘、恢复
所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分.在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区. 一.托盘编程相关函数 ...
- 【VS开发】最小化到托盘 shell_notifyicon和NOTIFYICONDATA
shell_notifyicon和NOTIFYICONDATA Shell_NotifyIcon函数,向任务栏的状态栏发送一个消息 函数原型 BOOL Shell_NotifIcon( DWORD d ...
随机推荐
- C学习笔记(2)---各类函数
1.函数(function)声明定义: 见例子,不复述:https://www.runoob.com/cprogramming/c-functions.html 2. 函数参数(Parameters“ ...
- easyui权限
实现权限目的: 是为了让不同的用户可以操作系统中不同资源 直接点说就是不同的用户可以看到不同的菜单 我们先来看下3张接下来用到的数据表 1.菜单表(t_easyui_menu) 2.用户菜单中间表(t ...
- 精选傻X错误 && 自己的套路
声明 参考课件由Accelerator汇编 1. 随手注意的细节 你写的main 真的是 main 么? 在无向图或者网络流找反向边的时候,编号 \(xor 1\) 的前提是,你的第一条边编号是 2或 ...
- class 命名规范(三)
抄自:https://www.jianshu.com/p/4945d9cf14e5 一.常见class关键词 布局类:header, footer, container, main, content, ...
- 洛谷 AT1350 深さ優先探索
洛谷 AT1350 深さ優先探索 洛谷传送门 题意翻译 高桥先生住的小区是长方形的,被划分成一个个格子.高桥先生想从家里去鱼店,高桥先生每次可以走到他前后左右四个格子中的其中一个,但不能斜着走,也不能 ...
- xcode静态库调试
[工程1]:静态库工程,用来生成xxx.a [工程2]:项目工程,需要引入静态库xxx.a 工程2引入静态库的方法是将工程1生成的xxx.a和include头文件目录,加入到工程2中. 而如果需要在工 ...
- 在线程内关闭thread handle,导致server crash
很多年以前了,那时tester发现一个server crash,通过测试pager功能很多次,可以把server搞崩溃. 一般来说,能再现的bug都不难改,不过这次因为要跑很多次test,才能再现cr ...
- windows上安装python和python开发工具
一.python安装: 登录python官网,下载需要的安装包:https://www.python.org/downloads/windows/.,一般就下载 executable installe ...
- xml、bean、json互转工具,可直接CV就用
1.jar包 <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactI ...
- [算法模版]Tarjan爷爷的几种图论算法
[算法模版]Tarjan爷爷的几种图论算法 前言 Tarjan爷爷发明了很多图论算法,这些图论算法有很多相似之处(其中一个就是我都不会).这里会对这三种算法进行简单介绍. 定义 强连通(strongl ...