汇编教程:系统托盘中的快捷图标

本课中,我们将学习如何把小图标放到系统托盘中去以及如何创建和使用弹出式菜单。

理论:

系统托盘是指任务条中的一个方形区域,在该区域中可以放入一些小图标,通常您可以在此处看到系统提供的最新时间。您自己当然也可以把快捷小图标放到此处。下面是这么做的步骤:

设置NOTIFYICONDATA型的结构体变量的成员变量的值:

cbSize 该结构体的大小。

hwnd 窗口的句柄。当鼠标滑过该小图标时,该窗口将接收到相关的消息。

uID 小图标的ID号。您可以取任意值,只是当您的应用程序有不止一个小图标时,您要能够区分出到底是那一个小图标接收到了鼠标的消息,也即ID号必须唯一。

uFlags 指定该结构体变量的那些成员变量有效。

NIF_ICON 有效。

NIF_MESSAGE 有效。

NIF_TIP 有效。

uCallbackMessage 自定义的消息。当鼠标对小图标动作时,WINDOWS外壳将把该消息发送到您的应用程序。该消息的值您可以自己定义。

hIcon 放入系统托盘中的图标的句柄。

szTip 64字节的缓冲区,它用来放入提示字符串,当鼠标停留在小图标上时,就会显示该字符串。

调用Shell_NotifyIcon函数。该函数在shell32.inc中定义,其原型如下:

Shell_NotifyIcon PROTO dwMessage:DWORD ,pnid:DWORD

dwMessage 是发送到WINDOWS外壳的消息:

NIM_ADD 把小图标加到系统托盘区。

NIM_DELETE 从系统托盘中删除小图标。

NIM_MODIFY 修改小图标。

pnid 是指向NOTIFYICONDATA型结构体变量的指针。

如果您想要加入一个小图标就用NIM_ADD,删除时使用NIM_DELETE消息。

基本上的消息就是这些。但是大多数的情况下,您不会仅仅满足把一个小图标放到那里。您还必须要对鼠标事件作出适当的反应。您可以在NOTIFYICONDATA型的结构体变量的成员变量uCallbackMessage 中设置您要处理的消息,然后WINDOWS外壳将在发生这些事件时通知您的应用程序。随着消息传送的参数wParam和lParam的值如下:
  wParam 小图标的ID号。它和您在NOTIFYICONDATA型结构体变量中的成员变量uID中设置的值一样。

lParam 低字包含鼠标消息。譬如,用户在小图标上按下了右键时,lParam中将包含WM_RBUTTONDOWN消息。

大多数的系统托盘中的小图标,在用户用鼠标右击时都会弹出一个菜单以方便用户选择。我们可先创建菜单,然后调用TrackPopupMenu函数来显示它。步骤如下:

调用CreatePopupMenu函数来创建菜单。该函数创建一个空的菜单。如果成功,将在eax中返回该菜单的句柄。

调用AppendMenu, InsertMenu 或 InsertMenuItem来向菜单中加入菜单项。

当您想在当前鼠标位置显示该菜单时,调用GetCursorPosition函数来得到鼠标当前的屏幕位置,然后调用TrackPopupMenu来显示菜单。当用户从弹出式菜单中选择了一个菜单项时,WINDOWS将发送WM_COMMAND消息给您应用程序的消息处理过程,这和通常的菜单选择是一样的。.

时间: 2024-10-28 01:40:30

汇编教程:系统托盘中的快捷图标的相关文章

如何使窗体缩为系统托盘中的一个图标?

1.第一步增加一个notifyIcon1的控件,命名为notifyIcon1.2.在第二步,在其最小化的事件中增加以下代码notifyIcon1.Icon = new System.Drawing.Icon("c:some.ico");notifyIcon1.Visible = true;notifyIcon1.Text = "开心就好";3.第三步,你可以增加一个ContextMenu控件,并且用notifyIcon1.ContextMenu与其关联起来.4.可以

Windows 10 RS1(1607) 任务栏中没有快捷图标怎么办

Win10系统更新到RS1(1607)后,开机发现任务栏中无快捷图标,并且调节中无此选项.   原因分析: 查找是因为360安全卫士有关. 解决方案: 测试发现关闭或卸载360安全卫士即可解决.    

解决系统托盘不显示音量图标问题

当出现系统托盘不显示小喇叭和本地连接图标时,往往会伴有"安全删除硬件"图标也同时消失,常用的办法是进入控制面板进行设置,将音频和声音设备属性窗口中的"将音量图标放入任务栏"这一项勾选后,小喇叭和本地连接的图标就出现了,但有时关机或重启后,再次进入系统,小喇叭和本地连接图标有可能又不见了,需要反复地这样设置. 为此,笔者想到了这样的一种解决方法:先检查相应的软件或设置中是否启用了任务栏图标,然后在"开始→运行"菜单中输入regedit.exe,打开

Win7系统解决快捷图标失效的问题

只要以系统管理员权限修改Windows7系统的组策略,就能轻松解决上述问题.首先以系统管理员权限登录进入Windows7系统,依次单击"开始→运行",弹出系统运行对话框中输入"gpedit.msc"命令,按回车键后,展开系统组策略编辑窗口,在该编辑窗口左侧列表区域,逐一跳转到"用户配置→管理模板→开始菜单和任务栏"分支上,用鼠标双击目标分支下的"用灰显不可用的Windows Install程序开始菜单快捷方式"选项,展开如图1

VC增加应用程序图标到系统托盘

 文对如何将应用程序的图标加入到Windows的系统托盘中做了较为详细的介绍,   然后给出了一个C++类以方便的实现该功能,并在VC++6.0中给出了一个应用程序   实例来体现其具体实现过程.同时该应用程序实例还讲解了如何在托盘中实现动   画图标以及在程序中关闭计算机的技术.   关键词:系统托盘 动画图标   Windows98桌面的系统托盘位于任务栏的右侧,即Windows98桌面的右下方.它常   用来显示一些系统的状态.如:系统时间,音量控制以及其它的一些图标(依个   人机器安装

系统托盘编程完全指南(2)

在本文的第一部分,我们讨论并示范了如何在自己的程序中应用系统托盘图标.通过使用自己创建的一个可重用的 C++ 类--CTrayIcon,我们可以轻松地实现托盘程序.不久以前我用这个类编写了一个程序,开始运行很正常,但是有一次不知什么原因Windows资源管理器死掉了,也就是说非正常关闭,重启资源管理器后,发现托盘程序仍然在运行,但托盘图标显示不出来,在任务栏中看不到托盘图标,只有重新启动机器才能重新显示出托盘图标,让人觉得心里很不舒服,有没有什么办法在这个时候不用重启机器而让Windows自动找

如何在Win7系统任务栏添加快捷图标?

  我们都知道在安装软件的时候会提示"是否在任务栏中添加快捷图标",知道点击图标右键可以将该图标从任务栏上解除.可是怎么把它再加到任务栏上面呢? 现在以添加计算机快捷图标为例讲解具体操作. 1.首先在桌面空白处鼠标右击选择"新建--快捷方式"选项; 2.然后在键入对象的位置的框中输入%SystemRoot%explorer.exe /e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D},然后点击下一步; 3.然后将快捷方式的名称命名为

win7系统中如何实现将快捷图标合并到任务栏

最新更换了电脑系统,我承认我是落伍了,win8都出来了,我才更换win7,以前一直用的是XP.但是由于老是出问题,自己电脑光驱又坏了,苦于装系统就难,最后就安装了个win7系统到电脑,毕竟以前很少用WIN7,里面的很多功能还是需要慢慢熟悉的. 我作为一个爱上网的网名,经常分享一些免费资源和网络技术到我的博客,大家肯定知道我电脑中装的软件是如何的多,但是软件在多有的是常用的,有的则是很少用,要是都把快捷图标放在桌面上,不经混乱,还不好找,另外还影响电脑速度. 在xp中我们经常在底部任务栏中有个下拉

VB6如何在托盘中写入应用程序图标

本文详细介绍VB6如何在托盘中写入应用程序图标 相关文章: 用VB实现托盘动画图标 VB托盘程序详解一 VB托盘程序详解二 VB托盘程序详解三 VB托盘程序详解四 VB托盘程序详解五 也谈Windows下的自动存盘 利用WindowsAPI获得系统高级功能 1.新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False 2.菜单:工程--添加模块 按"打开"这样就添加了一个新模块,名为Module1,保存为Module1.bas 3.在Module1中写下如下代