框架是用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