• 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(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);这个函数是为了让窗口在前端显示。

  • 相关阅读:
    SharePoint 2013 Nintex Workflow 工作流帮助(十二)
    SharePoint 2013 Nintex Workflow 工作流帮助(十一)
    win32-GetActiveWindow和GetForegroundWindow
    win32
    win32-ReadProcessMemory在x86和x64下运行
    win32-FileTimeToSystemTime的使用
    win32-改变显示器的亮度
    win32-改变Combox的编辑框和下拉列表的背景颜色和文本字体颜色
    C++ 析构函数的调用顺序
    win32-制作mini dump文件
  • 原文地址:https://www.cnblogs.com/yzhuang/p/11806823.html
Copyright © 2020-2023  润新知