用C++ Builder编写托盘程序

Tray(托盘)是Windows9x任务条上的一个特殊区域,它的技术名称为“任务栏布告区”,一些软件(如金山词霸Ⅲ)运行时会在托盘上放置一个图标,使用户一眼就能知道这个程序正在后台运行,要想激活它也很容易,通常只需单击一下这个图标即可,非常方便。

Tray的编程比较特殊,但并不难,主要包括图标、工具提示和消息等三个方面,它是Shell编程的一部分。ShellAPI提供了Shell—NotifyIcon函数,用它可以增加、删除或者修改托盘中的图标,在托盘上放置图标后,Windows Shell会负责把发生在图标上的鼠标事件通知应用程序。Shell—NotifyIcon函数定义如下:

WINSHELLAPI BOOL WINAPI Shell—NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA pnid);

dwMessage表示要完成的操作:NIM—ADD(增加图标)、NIM—DELETE(删除图标)、NIM—MODIFY(修改图标或提示文本),pnid是一个指向NOTIFYICONDATA结构的指针,结构的定义如下:

  typedef struct —NOTIFYICONDATA{
   DWORD cbSize;//结构所占的字节数,必须用结构的大小来初始化。
   HWND hWnd;//接受Tray图标消息的窗口句柄
   UINT uID;//由应用程序定义的图标ID
   UINT uFlags;//用来鉴别那些需要改变其值的域,NIF_ICON表示hIcon有效,可用来修改图标,NIF_MESSAGE表示uCallbackMessage有效,用来定义消息,NIF—TIP表示szTip参数有效,可修改工具提示。
   UINT uCallbackMessage;//应用程序定义的消息
   HICON hIcon;//Tray图标的句柄
   char szTip[64];//工具提示的文本
   }NOTIFYICONDATA;

时间: 2024-11-08 17:18:49

用C++ Builder编写托盘程序的相关文章

用VB编写托盘程序

在WINDOWS里,右下角有许多应用程序的图标.而程序本身的窗口是隐藏的,若你需要调用应用程序的窗口,则双击该图标即可.这种程序称为托盘程序.这是WINDOWS98操作系统的一大特色.使用户能够更加快捷的显示和隐藏应用程序,可以使任务栏不致于太乱.托盘程序在Visual Basic里是怎么实现的呢? 编写托盘程序主要解决两个问题: (1)创建.修改.删除托盘: (2)如何对托 盘接收到的消息进行处理. 这就要用到几个Windows API函数. 首先,Shell_NotifyIcon是用于托盘的

用C++ Builder编写Tray程序

Tray(托盘)是Windows9x任务条上的一个特殊区域,它的技术名称为"任务栏布告区",一些软件(如金山词霸Ⅲ)运行时会在托盘上放置一个图标,使用户一眼就能知道这个程序正在后台运行,要想激活它也很容易,通常只需单击一下这个图标即可,非常方便. Tray的编程比较特殊,但并不难,主要包括图标.工具提示和消息等三个方面,它是Shell编程的一部分.ShellAPI提供了Shell-NotifyIcon函数,用它可以增加.删除或者修改托盘中的图标,在托盘上放置图标后,Windows Sh

VB.NET编程之托盘程序篇

编程|程序 本文程序的设计及运行环境 (1)Windows 2000 Service (2)Net Framework SDK 正式版 静态托盘程序的编写过程 所谓静态托盘程序是指程序运行后,在系统托盘区的图标处于静止状态的托盘程序.动态托盘程序正好与之相反,它是指在系统托盘区图标呈现动画效果的一类托盘程序.下面就来探讨一下VB.NET是如何实现静态托盘程序. .Net FrameWork SDK为编写托盘程序提供了一个组件:NotifyIcon组件.NotifyIcon组件是一个WinForm

C#做托盘程序

程序 所谓托盘程序顾名思义就是象托起的盘子一样的程序.而所谓的托起的盘子就是程序运行中显示出的图标,而托起的位置就是视窗系统的的工具栏了.托盘程序具有直观.占用屏幕空间较小并且可以为它定义多个功能菜单,这就给操作者带来了方便,所以越来越多的程序设计者都把程序设计成托盘这种方式.我们已经看过了用其他语言设计托盘程序的例子,其中的大部分,整个设计过程还是相对烦琐的.而对于微软公司极力推荐的下一代程序开发语言--Visual C#来说,却可以十分方便设计出一个托盘程序.本文就是介绍Visual C#设

用C++ Builder开发Web程序

Web应用程序是运行在服务器端的可执行程序或动态链接库.它们可以响应用户要求,动态产生超文本页面,并将信息提供给客户浏览器. 由于Web应用程序的标准并不相同,程序的写法各异,这样就给开发者造成不小的困扰,因为开发人员不太可能了解每一种标准的写法.而C++ Builder可以很好地解决这个问题. C++ Builder将Web应用程序的开发封装成组件,使开发者面对一致的开发界面,使用一致的开发原理,惟一不同的地方在于开始产生程序时所选择的程序结构,至于程序的编写细节和方式都一模一样.本文通过两个

C++ Builder编写文本编辑器

CB是BORLAND公司继DELPHI之后开发的又一个通用的客户/服务器结构的开发工具.C++Builder的集成开发坏境除了深入更多的Windows95控制元件,可以建立的对象分类更为详细,添加了许多DELPHI所没有的部件之外,C++Builder的界面基本上与DHLPHI完全相同.C++Builder使用C++语言而不是object pascal语言,所以可以产生更快速和更高效的代码. 我学过并使用过foxbase.visual foxpro.c.borland c++.visual ba

c++builder编写的可执行程序一运行就出现Access violation

问题描述 c++builder编写的可执行程序一运行就出现Access violation 编写的绘图程序,一运行就出现Access violation at address 00429A16 in module"Project1.exe",Read of address 000002F0这个错误,我查了map文件,好像错误是一个无模式对话窗口Form4的TsearchRec这块有问题,这个子函数的功能是刷新Form4里的列表,请各位大神帮我看一下,是这段程序有问题吗 void __f

编写C++程序使DirectShow进行视频捕捉_C 语言

视频捕捉Graph的构建一个能够捕捉音频或者视频的graph图都称之为捕捉graph图.捕捉graph图比一般的文件回放graph图要复杂许多,dshow提供了一个Capture Graph Builder COM组件使得捕捉graph图的生成更加简单.Capture Graph Builder提供了一个ICaptureGraphBuilder2接口,这个接口提供了一些方法用来构建和控制捕捉graph. 首先创建一个Capture Graph Builder对象和一个graph manger对象

c语言-编写一个程序,打印输入中的单词长度的直方图。垂直方图。

问题描述 编写一个程序,打印输入中的单词长度的直方图.垂直方图. 直方图是如何理解????求教这道题~~ 这道题目是书上的!有没有懂的大神.给讲解啊. 解决方案 问题是怎么解决的? 我想到的就是算好格式用printf()一行行的输入,最后拼成直方图.