博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最小化托盘的实现方法
阅读量:6903 次
发布时间:2019-06-27

本文共 1018 字,大约阅读时间需要 3 分钟。

在书上看到的,认为实用,记下了。

首先,最小化托盘的基本原理是,将应用程序的主窗口隐藏,然后在托盘中绘制应用程序的图标。然后再为托盘图标加入一些事件处理。

核心函数是Shell_NotifyIcon()函数,负责向系统传递消息,加入、改动或删除托盘区的图标。原型:

WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(

DWORD dwMessage,

PNOTIFYCONDATA pnid

);

当中dwMessage标示功能,有NIM_ADD/NIM_DELETE/NIM_MODIFY。

pnid是程序最小化到托盘的图标信息结构体:

typedef struct _NOTIFYCONDATA {

DOWRD cbSize; //结构的长度

HWND hWnd;

UINT uID; //图标ID

UINT uFlags; //标志着其它哪些成员数据的有效性?

UINT uCallbackMessage; //当用户单击托盘区图标时会向窗体发送消息

HICON hIcon; //图标句柄

char szTip[64]; //鼠标移动到托盘图标上时显示的文字

} NOTIFYICONDATA, *PNOTIFYICONDATA;

相关代码:

...

NOTIFYICONDATA nid;

nid.cbSize = (DWORD) sizeof (NOTIFYICONDATA);

nid.hWnd = this->m_hWnd;

nid.uID = IDR_MAINFRAME;

nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP; //这句我不理解?

nid.uCallbackMessage = WM_CALL;

nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));

strcpy(nid.szTip,"MyApp");

Shell_NotifyIcon(NIM_ADD,&nid);

ShowWindow(SW_HIDE); //隐藏主窗体

...

接着自己定义消息WM_CALL,方法有一篇文章有讲到。

这里要注意规定了回调消息wParam接收图标ID。lParam接收鼠标的行为。

另外,当程序所有关闭时,也应该删除掉托盘。代码差点儿相同,不反复了。

转载地址:http://dhldl.baihongyu.com/

你可能感兴趣的文章
C# 超高速高性能写日志 代码开源
查看>>
js-jquery-SweetAlert【二】配置方法
查看>>
反向传播公式
查看>>
轻松学习Ionic (二) 为Android项目集成Crosswalk(更新官方命令行工具)
查看>>
c 变量的存储类型auto等(基础知识)和c函数变量
查看>>
树莓派的GPIO编程
查看>>
sql server 2008如何导入mdf,ldf文件
查看>>
让Asp.Net WebAPI支持OData查询,排序,过滤。(转)
查看>>
在centos中安装mangodb
查看>>
Windows Dos命令下查看端口号,杀死端口
查看>>
VS------csc.exe已停止工作解决方法
查看>>
PHP mysql_fetch_array与mysql_fetch_row的区别
查看>>
Python ORM框架之 Peewee入门
查看>>
Windows版Mycat结合mysql安装配置+水平切分(转载)
查看>>
CSS3 Flex布局整理(二)-容器属性
查看>>
第11章:sed进阶操作
查看>>
js获取单独一个checkbox是否被选中
查看>>
【工具】Sublime + MarkdownEditing + OmniMarkupPreviewer使用起来
查看>>
django Multi-table inheritance ---- 用于实现基表-子表
查看>>
关于Mac终端故障一直出现 [进程已完毕]
查看>>