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

用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应用程序增色不少,

在DELPHI程序中动态设置ODBC数据源 在DELPHI程序中使用ADO对象存取ODBC数据库 在DELPHI程序中自动设置ODBC数据源 在Delphi的DBGrid中插入其他可视组件 在Delphi的Socket编程中如何从服务器向指定的客户机发送信息? 在Delphi动态生成定义数据库 在Delphi中处理数据库日期型字段的显示与输入 在Delphi中简单实现多重查询 在Delphi中建立和使用别名 在DELPHI中使用ADO对象存取ODBC数据库 在Delphi中使用DBF数据 在Delphi中随意控制DBGrid 每一行的颜色 在Delphi中自动检测、建立数据库别名和表格 在存储过程中使用use database-Delphi资料 在一个Dbgrid中显示多数据库-Delphi资料 在运行期创建表-Delphi资料 怎样把可以使用的表名输出到一个选择框?-Delphi资料 怎样发布基于Microsoft SQL Server的程序-Delphi资料 怎样解决打开一个DBF表时的Index not found..错误-Delphi资料 怎样向SQL Server插入带有Image字段的记录-Delphi资料 怎样在Paradox表中加密码?-Delphi资料 自动Login数据库-Delphi资料 自动检测、建立数据库别名和表格-Delphi资料 自动注册Paradox-Delphi资料 Delphi 4增訂的Object Pascal Delphi 5 Enterprise版10大特点 Delphi 插件创建、调试与使用应用程序扩展 Delphi 程序制作要点 Delphi 中面向对象编程之我见 Delphi”程序级触发器”功能的实现 Delphi4.0系统提示信息的汉化 不好意思,小弟又来麻烦大家了! 上次的文章到那儿去了? enmity,进来,我给你结帐 enmity,进来,我给你结帐!! 各位侠客帮忙啊,重新装系统出了问题! 将10进制转换成16进制的函数是什么啊? VC高手,怎样以编程的方法实现磁带机的Backup 和 Restore. enmity,进来,我给你结帐.共200分 支援白菜300分,支持白菜个人网站建设:))) CMM 的缩写是什么? 想和大家讨论一下怎样系统的编制软件 如何实现和Word、CorelDRAW同样效果缩放位图 请问各位大哥大爷大妈大。。。。。。。。。。。。。哪里有支持 ASP 的服务器软件下载 我该如何控制IP地址??高手请进。。。 弱弱地问:关于SQL server中的中括号。 各位侠客帮忙啊,重新装系统出了问题!! 一点点小问题????? 请问在 WINDOWS98 下面,除了IIS,还有没有支持 PHP 的服务器软件呢? 在ADO中如何获取表名 关于ASN树的问题(snmp中的MIB的拓扑树) 你是高手你进来!!!!! 各位的顶级域名都在哪申请?价格/速度如何?大家都来说说! DirectX8的MultiFileReader过滤器怎么找不到? 关于用VB显示ado数据库中的图像字段问题 大家来谈谈Msdn如何有效利用 请各位帮忙查看我这段程序错在哪里 , 我是照书上做的 , 可就是无法保存. SQL plus 为何无法登录?? 谁要下载msdn? 紧急求救!寻找工作! 最新新消息~~~~~~~台灣地區中午地震最大震度花蓮市5級 有没有大连的公司要俺? 请教大家!!!java如何实现多重继承?接口该如何使用?份数可以再加,只要我明白了 怎样以编程的方法实现磁带机的Backup. 愿者请进,请各位留下自己的QQ或E-mail,以后大家可以多多交流!!! solaris unix8 的一个问题 asp是用什么软件的阿?我用了interdev,可是开始新建项目时就不行,叫你输入serve时,总是不对?应该输什么啊? 关于字符集 哪里有好的LAN管理软件??? 一个去美国的机会,保签(替朋友贴的,信誉没问题) 打印没有输出? 动态分配内存 因为本人准备过一段时间出去找软件开发工作,本人手头有一张高级程序员资格证书,但没有本科学历请问?? delphi6.0中 data access中怎么没有ttable 和tquery部件了, 该怎么办? 在w2k 下多用户的自动登录。。请指教? SubclassWindow的问题,急,多谢!!!! 高分求购高程经验 一个留学美国的机会,保签 本人手头只有一张高级程序员资格证书,但没有本科学历请问?? 请问如何制作多表头报表,有什么好的VCL吗? 关于水货手机的问题 Is there very large defferent between VB and delphi? 天气冷了,你要盖好被子,不用依靠谁的体温 英文翻译 盘面里的黄金分割线怎么看滴……0.618 0.5 0.382 都有说法吗? 饮水机上的水,热水温度最高能达到多少度?另外喝自来水加热过的水好还是喝饮水机上的热水好? 补充句子,天气越来越冷,湖面上结了厚厚的冰,天越来越( ),( )人越来越( ),( )天越来越冷,湖面结了冰,天越来越( ( 天越来越( )( 天越来越( ( ) 1.618黄金分割黄金分割 饮水机桶中的水会不会和烧开的热水混合?如果把自来水灌进桶里,当做饮用水好不好? 人体在一天中什么时候体温最高,什么时候体温最低?它的变化趋势是怎样的? 黄金分割比例是0.618,这句话对吗要注意各种细节哦~ 饮水机的水是烧开的吗?有没有到100度?我想用自来水放到桶里来用不知行不行. 人体在一天中体温怎么变化在一天中,正常体温范围上午大概是多少,中午是多少,下午,晚上又是多少 黄金分割比是什么 我们家自来水烧开后特别难喝,现在每天喝饮水机过滤的水,长期喝有好处还是坏处阿?饮水机过滤的东西是碳粒我家水壶是不锈钢的,很干净的!没有水垢,自来水里应该不含碱(烧开的水没碱,没 体温计的范围体温计的测量范围是多少 什么是黄金分割率? 黄金分割里较短线段与线段的比值= =就这样..不要小数带根号谢谢...是较短线段与线段的比值注意~较短线段较短线段较短线段较短线段..... 体温计量程一定是35——42吗?分度值一定是0.我 问的是:是不是一定一定一定是 这个值?还有个问题:体温计一定是水银的吗? 什么是黄金分割比例?教我分 生活中的黄金分割的实例,差不多要3个,具体一点~~~ 体温计的量程为什么,分度值为什么 黄金分割的比例率是多少? 黄金分割有什么生活实际应用实例?我们今天学了黄金分割,但不知道究竟有什么用途`` [紧急求助]常见体温计量程和分度值是多少?若想利用点燃的蜡烛、光具座、光屏来测量凸透镜的焦距,写出实验方案 黄金分割率 生活中的黄金分割比,快一点,一定要写出比. 用普通温度计测液体的温度进行读数时,玻璃泡不能离开液体,用体温计测时,则可以离开人体进行读数,为什越快越好 ,越准确越好,我不希望有重复的 黄金分割的比例是多少?是1比多少啊? 能举例告诉我黄金分割广泛应用于生活用品的例子吗 用普通温度计测液体的温度进行读数时,玻璃泡不能离开液体,用体温计测时,则可以离开人体进行读数,是因它有一个(?)只要填一个词 黄金分割比例是什么的拉速度快解放;阿生的纠纷了爱上的话卡都是法律框架爱上对方空间哈斯地方爱的身份和 【】“黄金分割”在生活中的例子?【】如题 为什么体温计的玻璃泡比温度计的玻璃泡长 黄金分割比例 我们喝什么水健康烧开的自来水致癌 体温计可以离开人体读数 是因为什么的作用 世界上有什么建筑具有黄金比例和黄金分割的. 水二次烧开喝,对身体健康有影响吗?二次烧开的水是什么味道?蒸馏水一样的无味吗? 人的体温是由“下丘脑”中特殊的神经细胞控制的,他对人体的体温的变化很敏感.脑温度高于37度时,人体散热机制(如血管舒张、出汗等)就还活跃起来.已知37度时蒸发18g汗水所需能量是4320j 黄金比例和黄金分割有什么区别? 如何饮水更健康? 专家:自来水烧开喝安全 下列关于人体在寒冷环境中维持体温恒定的叙述中,正确的是( )A.寒冷时,酶活性自然增强,因而代谢加快,产热增加B.寒冷时,肾上腺素分泌减少,代谢降低C.寒冷时,人体产热多,散热少,以维持 黄金分割与黄金比例分割有何区别 自来水烧开就是安全的饮用水吗? 当人体处于寒冷环境时,保持体温恒定的方式A.增加产热,散热不变B.增加散热,产热不变C.增加产热,减少散热D.增加产热,增加散热 黄金比例的标准是什么?什么是黄金分割点?古代选美女的标准好像就是依照黄金比例的吧,这个比例是什么? 饮水机的水反复烧开能喝吗? 为什么人体的温度是37度,室外的温度39度左右,人会感觉到那么热哎?比如说你去接触一个38度的东西,你却不是好热,但是为什么天气才39度就会决的很人勒? 有没有关于黄金分割线(黄金比例)详细的介绍?如:黄金分割线的来历、应用范围等等. 自来水安全吗?烧开就可以喝了吗? 当人的体温是37度时,华氏温度是多少 黄金分割是比例中项吗? 饮水机一般把水烧到几度? 胳膊天气越热反而越冷怎么回事好像是月子病 但不是很清楚若有怎样治疗的话那就更好了 为什么只有黄金分割比例 饮水机里面的水一定需要烧开了才能喝吗? 为什么天气越热 井水越冷 黄金分割定律1.618还是0.618如题... 饮水机喝的水是用自来水烧的,红的一边是开水,蓝的一边接的水可以喝吗?拜托了各位 谢谢 为什么天气越来越冷,又越来越热 股市中黄金分割数据中出现了0.382 、0.5 、0.618 和1.382 、1.5、1.618这两组数据?应怎样区分 饮水机放自来水饮用对身体有害吗?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn