首页 > 编程语言 > 详细

c++ win32下窗口的最小化到托盘以及还原

时间:2019-11-06 17:57:22      阅读:414      评论:0      收藏:0      [点我收藏+]

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

c++ win32下窗口的最小化到托盘以及还原

原文:https://www.cnblogs.com/yzhuang/p/11806823.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!