任务条状态区的应用

Windows95的任务条(Taskbar)上有一个状态区,可以显示当前输入法(中文版)、当前时间等信息,当启动打印管理器时还可显示打印管理器的图标,表明打印机正在工作。我们可以使用这一技术为正在后台工作的程序设置一个图标,以显示它的工作状态,用户可以通过鼠标点击来查询详细情况或修改工作参数。下面对其实现方法作一介绍。

图标的添加和删除

实现这两个操作都是通过调用Shell_NotifyIcon函数,并传递两个参数:一个是操作指示,添加时为NIM_ADD,删除时为NIM_DELETE;另一个是结构NOTIFYCONDATA,并需适当的初始化。通过指定不同的图标标识号,可以添加多个图标。下面的两个函数分别实现添加图标和移去图标。

//AddTaskBarICON:将指定图标添加到TaskBar的状态区,成功返回TRUE,否则返回FALSE

//hwnd:指定接收消息的窗口

//uID:图标的标识号

//hicon:待添加的图标句柄

//IpszTip:当鼠标停留在图标上时显示的提示信息

BOOL AddTaskBarICON(HWND hwnd,UINT uID,HICON hicon,LPSTR lpszTip)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=hwnd;
tnid.uID=uID;
tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
//用户点击图标时传给指定窗口的回调函数的消息,由程序员自定义
tnid.uCallbackMessage=MYWM_NOTIFYICON;
tnid.hIcon=hicon;
if (lpszTip)
lstrcpyn(tnid.szTip,lpszTip,sizeof(tnid.szTip));
else
tnid.szTip[0]=‘\0''
//NIM_ADD:添加图标
res=Shell_NotifyIcon(NIM_ADD,&tnid);
if(hicon)
DestroyIcon(hicon);
return res;
}
//DeleteTaskBarIcon:移去AddTaskBar的状态区上的指定图标,成功则返回TRUE,否则返回FALSE
//hwnd:添加图标时指定的窗口
//uID:要删除的图标标识号
BOOL DeleteTaskBarIcon(HWDN hwnd,UITN uID)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=hwnd;
tnid.uID=uID;
//NIM_DELETE:移去图标
res=Shell_NotifyIcon(NIM_DELETE,&tnid);
return res;
}

接收图标返回的消息

_________________________________

状态区的图标可以接收用户的输入,将接收到的鼠标消息传送到指定窗口的回调函数,程序可以对用户的输入做出相应的反应。下面是对应的窗口回调函数和消息处理函数的例子:

//MainWndProc:窗口回调函数,处理传递给窗口的消息
//Windows根据在添加图标时指定的窗口句柄确定对应的回调函数
LRESULT CALLBACK MainWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
  { //MYWM_NOTIFYICON:添加图标时指定的消息
  case MYWM_NOTIFYICON: //调用自定义的消息处理函数
   ON_MYWM_NOTIFYICON(wParam,lParam);
   break;
……
  case WM_DESTROY:
   PostQuitMessage(0);
   break;
  default:
   return(DefWindowsProc(hwnd,message,wParam,lParam));
  }
return lParam;
}
//On_MYWM_NOTIFYICON:处理TaskBar的状态区图标产生的消息
//wParam:回调消息的第一个参数,图标的标识号
//lParam:回调消息的第二个参数,鼠标消息的代号
void ON_MYWM_NOTIFYICON(WPARAM wParam,LPARAM lParam)
{
UINT uID;
UINT uMouseMsg;
uID=(UINT) wParam;
uMouseMsg=(UINT) lParam;
//本函数只处理了鼠标左键单击消息,类似可以添加处理其它
//鼠标消息的代码
if(uMouseMsg=WM_LBUTTONDOWN)
//当用户使用鼠标左键单击时显示一个消息框,
MessageBox(NULL,"Be happy,don''t worry.", "TaskBarICON",MB_OK);
return;
}

时间: 2024-09-30 17:02:26

任务条状态区的应用的相关文章

uitableview-实现类似微信的一条状态中添加回复的功能

问题描述 实现类似微信的一条状态中添加回复的功能 各位大神,我想开发类似微信朋友圈里,一条状态中显示回复的功能,是通过在UITableViewCell中添加UITableView的方式实现的吗? 具体有没有类似的代码可以参考?谢啦 再就是,一条回复中会显示,:"张三回复李四:" 张三和李四这两个名字可以点击,这是怎么实现的? 求各位大神指导啊!

Mysql/MariaDB启动时处于进度条状态导致启动失败的原因及解决办法_mariadb

今天打开网站突然发现网站无法打开,后来通过SSH登陆服务器发现MARIADB数据库没有启动成功,再次启动还是无法成功启动,一直处于启动进度条,进度条结束后提示ERROR.查看日志出现以下错误: InnoDB: Unable to lock ./ibdata1, error: 11 后经调试发现是因为MariaDB数据库所在分区已经满了,造成无法启动. 只有将MariaDB数据库存放数据目录移动到另外一个磁盘份额比较大的分区或者将当前分配删除一些不必要的文件. 移动办法: 1.停掉mysql服务器

WEB应用程序中的进度条

web|程序 WEB应用程序中的进度条 Julien Cheyssial 写作于2003/10/01 Joise.LI翻译并修改于2004-4-2 写在前面: 原文是我在需要使用进度条时找到的一篇文章,讲解详细并附有实例.我在原文的基础上加上了自己的修改:增加了线程处理并且将进度条的使用放到了子线程中处理.这是我第一次翻译文章,敬请各位指正.原文见于http://www.myblogroll.com/Articles/progressbar/,请对照参考. 谁说在WEB应用程序中不能使用进度条?

用任务条跟踪文件下载

注意:本文代码不是最快的和最有效的代码.我有一套更快的代码.希望你在阅读本文之后能编写出自己的高效代码. 概要 程序用线程管理下载过程,这样主程序就不会被封闭,程序还有中止下载的功能.下载过程在线程中单独进行,并随时刷新屏幕上的任务条状态. 创建下载文件: CInternetSession netSession; CStdioFile *file; file = netSession.OpenURL(char url,1,INTERNET_FLAG_TRANSFER_BINARY | INTER

长沙大河西先导区项目建设管理办法及工作流程(试行)

第一章 项目建设准备阶段 一.建立重大项目储备库 由项目建设部组织建立长沙大河西先导区重大建设项目储备库. (一)入库条件: 1.符合全市经济社会中长期发展规划.城市总体规划和"两型社会"建设总体要求: 2.符合国家产业政策和先导区的产业规划,有利于促进产业发展: 3.具有较好的基础条件和优势,对先导区经济社会发展有重大促进作用,预期可以取得较好的经济.社会.生态效益: 4.政府类投资基础设施项目投资额1000万元以上.产业项目投资额500万元以上.社会事业项目投资额200万元以上的项

Bootstrap每天必学之导航条_javascript技巧

1.导航条 导航条(navbar)和上一节介绍的导航(nav),就相差一个字,多了一个"条"字.其实在Bootstrap框架中他们还是明显的区别.在导航条(navbar)中有一个背景色(显示更突出).而且导航条可以是纯链接(类似导航),也可以是表单,还有就是表单和导航一起结合等多种形式.在这一节中将一起探讨Bootstrap框架中导航条的使用. 导航条和导航一样,在Bootstrap框架中是一个独立组件,所以你也可以根据自己的需求使用不同的版本: LESS版本:对应的源文件navbar

使用python在校内发人人网状态(人人网看状态)_python

复制代码 代码如下: #_*_coding:utf_8_ from sgmllib import SGMLParserimport sys, urllib2, urllib, cookielibimport datetime, time class spider(SGMLParser):     def __init__(self, email, password):        SGMLParser.__init__(self)         self.email = email     

FCKeditor 图片上传进度条不动的解决方法_网页编辑器

因为昨天晚上急着要把理事会员的图片送上网,所以采用FTP传送图片,然后使用<img src="/Upload/abcd.jpg" />这样的笨方法把图片全部搞定. 今天上午8点,开始研究这个问题,在网上查到了这样的帖子,原文如下: 最近有个项目用到FCKEditor,载了目前最新版的2.6.4,配置一切OK,调试状态一切OK,发布到服务器(windows server 2003 sp2),问题来了-- 上传图片后页面左下脚出现脚本错误提示,点开可看到是"没有权限&

进度条,随机数---demo笔记【原创】

本人学习笔记,参考网上代码完成 makefile TEST_OBJ := rng_app MAKEOPT := ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- ARM_LINUX_KERNEL := /home/zhangbh/5830/hjf_5830x_7_24/firmware/build_dir/linux-brcm5830_sxxx-prolin2/linux-3.6.5 PWD = $(shell pwd) all: arm-none-l