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

視窗關閉時銷毀托盤:

雙擊托盤圖示還原視窗:

SetForegroundWindow(hWnd);這個函式是為了讓視窗在前端顯示,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/20689.html
標籤:Windows
上一篇:百度云人臉識別API人臉對比
