当前位置: 移动技术网 > 科技>操作系统>windows > c++ win32下窗口的最小化到托盘以及还原

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

2019年11月07日  | 移动技术网科技  | 我要评论

王丽达微博,长沙家居建材市场,中国好声音全部歌曲

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网