框架是用visual studio建立的win32控制台模板,而后本身添加最小化及还原部分代码。前端
须要额外包含的头文件:shell
#include <shellapi.h>
#include <WinUser.h>
方式是在托盘区建立图标,隐藏主窗口。api
托盘建立图标:框架
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(0), 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(0), MAKEINTRESOURCE(IDI_SMALL)); wcscpy_s(nid.szTip, _T("自定义程序名"));//鼠标放在托盘图标上时显示的文字 Shell_NotifyIcon(NIM_DELETE, &nid);//在托盘中删除图标 }
最小化的时候去隐藏窗口须要捕捉最小化的消息,这个消息在处理WM_SIZE时,wParam参数为SIZE_MINIMIZED。spa
窗口关闭时销毁托盘:3d
双击托盘图标还原窗口:code
SetForegroundWindow(hWnd);这个函数是为了让窗口在前端显示。blog