c++ win32下窗口的最小化到托盤以及還原

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

相關文章
相關標籤/搜索