说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用VB实现任务栏右下角的小图标

HTML文档下载 WORD文档下载 PDF文档下载
用VB实现任务栏右下角的小图标


将VB应用程序缩成系统状态栏图标二法
第一种方法:
VB光盘的tools\unsupport\systray目录下有一个例子,将此目录复制到硬盘,编译生成一个OCX控件,在自己的程序中使用此控件,可以实现将程序图标放于右下角系统图标区,这方法比调用API要简单得多


第二种方法:
梁洁仪
---- 在很多应用程序中,其操作窗口缩小后将变成一图标放置在系统状态栏中。

---- 为什么有的程序可以缩小成图标呢?

---- 对于Windows来说,这些图标并非窗口或程序,它们只是图标,能作出这样的功能,关键在于调用了Windows的API函数Shell_NotifyIcon,在Visual Basic开发环境中,通过其所附带的API浏览器,我们可查找出Shell_NotifyIcon的声明格式如下:

---- Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

---- 现把本函数声明中的参数分别说明如下:

---- 参数dwMessage为消息设置值,它可以是以下的几个常数值:0、1、2。在程序中为了使用更方便,我们把它们定义为三个常量:NIM_ADD、NIM_MODIFY及NIM_DELETE,本示例中的常量及Shell_NotifyIcon调用都可以在窗口新建的模块中声明它:

Public Const NIM_ADD = 0 //加入图标到系统状态栏中
Public Const NIM_MODIFY = 1 //修改系统状态栏中的图标
Public Const NIM_DELETE = 2 //删除系统状态栏中的图标

---- 这三个常量的应用将中下文中具体介绍。
---- 参数LpData 用以传入NOTIFYICONDATA数据结构变量,我们也需要在"模块"中定义其结构如下:

Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type

---- 在本数据结构定义中,各变量都有其实用意义:
cbSize:需填入NOTIFYICONDATA数据结构的长度。
HWnd:设置成窗口的句柄。
Uid:为图标所设置的ID值。
UFlags:用来设置以下三个参数uCallbackMessage、
hIcon、szTip是否有效。
UCallbackMessage:消息编号。
HIcon:显示在状态栏上的图标。
SzTip:提示信息。

---- 其中参数uCallbackMessage、hIcon、szTip也应在模块中声明为以下的常量:
Public Const NIF_MESSAGE = 1
Public Const NIF_ICON = 2
Public Const NIF_TIP = 4

---- 了解了上述各参数所代表的意义,就可以直接编写代码了。应用本函数所建立的窗体示例(略)。
---- 为了进一步让大家了解本函数的使用,下面将将详细介绍上例所需编写的代码。

---- 1、加入图标按钮。代码如下:

Dim nid As NOTIFYICONDATA

nid.cbSize = Len(nid)
//取数据结构的长度设置给cbSize
nid.hWnd = Me.hWnd //设置窗体的句柄
nid.uID = 9999 //图标的ID值,可自定义
nid.uFlags = NIF_ICON //表示设置图标
nid.hIcon = Me.Icon
//把图标设置成当前窗体的图标,也可以指定为某一图标文件

Shell_NotifyIcon NIM_ADD, nid //加入图标

---- 2、删除图标按钮。这里要注意的是,当我们把图标加入到状态栏后,一定要把hWnd及uID的值记下来,不然将无法正确删除此图标,本按钮的Click事件代码如下:

Dim nid As NOTIFYICONDATA
nid.cbSize = Len(nid)
nid.hWnd = Me.hWnd //记下句柄
nid.uID = 9999 //ID值
Shell_NotifyIcon NIM_DELETE, nid
//调用Shell_NotifyIcon函数删除它

---- 3、改变图标按钮。同样的道理,在窗体运行过程中,如果要更新图标,可以用以下的Click事件代码来完成:
Dim nid As NOTIFYICONDATA
nid.cbSize = Len(nid)
nid.hWnd = Me.hWnd
nid.uID = 9999
nid.uFlags = NIF_ICON
nid.hIcon = Image1.Picture
//用窗体中的Image控件中之图片来代替

Shell_NotifyIcon NIM_MODIFY, nid //修改它

---- 4、设置信息提示按钮。提示信息就是当我们将鼠标移到本图标上时,这些图标会显示出来的信息,下面的Click事件代码可以作到:
Dim nid As NOTIFYICONDATA

nid.cbSize = Len(nid)
nid.hWnd = Me.hWnd
nid.uID = 9999
nid.uFlags = NIF_ICON + NIF_TIP
nid.szTip = "这是试验图标" + Chr(0)
Shell_NotifyIcon NIM_MODIFY, nid

---- 当然,在把本窗口缩小成图标的同时,也别忘了将窗口隐藏,代码是:Me.hide。这样窗口就不会在任务栏中出现了。
---- 利用Win 32 API函数,我们可以完成很多VB本身不具备的功能,只要灵活运用,必能为VB应用程序增色不少,

Chrome OS 黑客大赛总奖金为314.159万美元 微软雷德蒙研究院副总裁:从计算研究到惊人发明 还驾驭不了4核? 别人已模拟出百万核心上的并行 RIM将网络直播BlackBerry 10发布会 解读TDD的五大误区 Amazon 2012财年Q4财报:电子书业务增长70% 从暴风影音CTO到创业者:画中画相机话中话 为什么Android应用开发总要比iOS晚? 传奇VC马克.安德雷森:未来的企业什么样? 呼吁国会通过“创业签证”:奥巴马助力美国招揽海外人才 Surface Pro最低1019美元,价值究竟如何? 搜狗号码通产品经理谈微创新 数据和运营更关键 在线推荐系统是如何进行工作的? 欧朋浏览器上架App Store,iOS生态真要变天? 苹果iOS 6.1地图搜索API将替代谷歌Places Oracle向开发者承诺 称尽快修复Java安全问题 日本:开发者与投资人都不容忽视的移动市场 Unity 3D引擎:十大最火的插件推荐 重塑品牌 RIM更名黑莓 发布BlackBerry 10移动操作系统及新手机 NoSQL依赖的不只是大数据 还有应用程序架构的改变 新一代Apple TV增强内在组件 外观不变 加速Web开发的7款知名HTML5框架 Firefox OS开发者日来袭 5小时15款Web应用出炉! 微软发布Office 365家庭高级版 订阅费499元/年 鲍尔默对Office信心满满,十亿用户量触手可及 【多图】梦幻现实 IBM的未来超级计算机水世界 一名骨灰级工程师的OpenStack部署总结引发的讨论 解读DuckDuckGo搜索 百万点击也敢叫板Google 开发者成功学:扔掉你那些很sexy的想法 VMware严控ESXi API 引发用户和ISV被绑架担忧 布局O2O Facebook推出实物礼品卡 大虾们::急呀!帮帮!!在线等待!! 恶梦从上午开始 求助!我的CapsLock键出问题了(只能打开大写,不能关闭) 请帮我看这条SQL语句,什么地方不对啊! Webservice的哪里算中间层,可以进行逻辑控制?客户端是否需要midas.dll? 为什么客户端浏览器总出错误? 如何获得DataReader中的行数? Libran() 请进 什么关键时候信赖全球通??屁话,大家来帮忙鄙视一下移动!!! 如何设置Log文件,记录数据库的操作信息? 请问哪里可以买到数据线把手迹和电脑联起来 蓝天,我有一个CELL表格的问题? 请问那里有bcb6.0下载(100)分 用DataGrid进行自定义分页后,页面切换时,如何方便的记录嵌在DataGrid中的Checkbox的状态? 关于GHOST的问题,现在的版本是否能刻WIN2000,以及域网中广播式刻录的问题,急!!!!!!!!!!!!!!!!!! 图片显示问题 请问有关程序员的考试 AntBrother(蚁哥) 请进 AntBrother(蚁哥) 请进 帮忙,如何屏闭TextBox控件的其它字符输入,只能输入数字!!!! 下的一段代码,在BCB怎是报错 大难题:在Win2000或者WinXP上安装Oracle7.3.3 ???? 一个很菜的问题:怎么查看所有的变量或属性值? 请问VB.NET如何获取IE收藏夹的位置? 迷惑不解,请教了 怎么用按钮来控制复选框的全部选中呀??? Excel中宏的问题!急 大难题:在Win2000或者WinXP上安装 Oracle7.3.3 ??? 关于窗口的大小和位置的问题 视图指针问题,高手帮忙!谢谢! 寻觅图象处理高手共同合作,欢迎朋友们去偶的站点申请免费主页空间 中秋佳节,兄弟们发Cash了吗 ? 寻觅图象处理高手共同合作,欢迎朋友们去偶的站点申请免费主页空间 寻觅图象处理高手共同合作,欢迎朋友们去偶的站点申请免费主页空间 用户控件 高手请进!!关于线程问题,本人在线等候!!! 如何禁止局域网中的MSN `×××怎样验证一个文本宽是否输入了汉字××× 为什么我的程序编译后跟没编译一样!大家救救我啊!急! JAVA发展趋势是什么? WEB服务器问题?????? 如何处理编码的问题 100分求助!关于多选框的问题!急啊!在线等!! 关于布局管理器的问题 recvfrom 的超时怎么不行呢? IIS不能访问asp文件,只能访问html文件,而且网页中的所有弹出类网页链接全都打不开(在线等) 在JSP里边怎么动态插入文件 设计物流系统应该考虑那些问题,实现那些功能,拜托 设计物流系统应该考虑那些问题,实现那些功能,拜托 php中的register_globals为off,怎么获得url中传递参数 设计物流系统应该考虑那些问题,实现那些功能,拜托 x2+2x-35=0求解法X的平方+2X-35=0 老子说功成身退是大自然的道理,那功成的定义是什么. 我们怎么判到功成了?成功不是没有边界吗? 身未升腾思退步,功成应忆去时言,只因先主叮咛后,星落秋风五丈原 身未升腾思退步,功成应忆去时言,只因先主叮咛后,星落秋风五丈原 原意是什么? 已知2x-p=1,3x+q=4,且5p-6q=7,求x的值 功成应该身退,(最好有例子)! 甲、乙两车同时从两地相向开出,甲车每小时行50千米,经过3小时已驶过中点30千米,此时甲车与乙车还相距6千米,乙车每小时行多少千米 甲、乙两车同时从两地相向开出,甲车每小时行50千米,经过3小时已驶过中点30千米,此时甲车与乙车还相距6千米,乙车每小时行多少千米用方程解 求一段不带一个脏字的脏话 甲‘乙两车同时从两地开出甲,甲车每小时行50千米,经过3小时已驾过中点30千米,此时甲车与乙车相距6千米,求乙车每小时行多少千米 甲乙分别从南京上海出发,甲车每小时行50千米,乙车每小时行30千米,两车离中点30千米处相遇,南京和上海相距多少千米 最先答的做最佳答案甲、乙两数的差是0.99,甲数的小数点向右移动一位则与乙数相等.甲、乙两数各是多少?(一定要算式) 韩被日本强征女劳工状告三菱获胜 获赔调查报告称澳移民目的地开始从欧美转向会议记录爆奥巴马医改网站开通首天仅6芬兰计划实施新禁烟法 拟禁居民在阳台斯诺登不会赴德就监听事件作证 可在俄重大内政外交事奥巴马一问三不知 遭讽韩国法务部否认对检方调查国情院干政案韩国女劳工曾被日本强征 胜诉将获赔上Facebook承认传闻:年轻人已开挪威一商店万圣节装饰“残肢”吓哭小朋英外卖员即将做科技顾问送最后一份外卖2.8万考生被示范高中录取福彩双色球第15087期图文:沪指跌近2%盘中巨震6%美寻宝家庭发现沉船宝藏图文:满洲里试驾路虎发现神行楚天都市报讯 □武汉流凌图文:中国90后在美醉驾超速酿车祸致关于扩大我市高污染排放机动车禁行区域图文:东南汽车首款SUVDX7上市关注录取通知书因为对大学有更高期待图文:中国百艘舰艇南海大演兵重生之神级网商道魂觉醒韩主超玄幻文明灵山魔宠记龙城大世界位面监察使武道河山随身带个黄金任务空间超级培养皿圣堂之心南山生态园旅游赤峰市植物园旅游红山国家森林公园旅游红瑶寨旅游黑龙江源头旅游洛古河村旅游西周燕都遗址博物馆旅游普寿寺旅游七佛寺旅游集福寺旅游文津阁旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘