当前位置:编程学习 > C/C++ >>

TrayIcon组件的使用TrayIcon组件的使用

其实,在 Borland C++ Builder 5.0 中编写Tray程序是件很简单的事。在安装 Borland C++ Builder 5.0 时选择Full(完全)安装,安装完成后,在Samples组件页中有一个TrayIcon组件,它封装编写Tary所需的Window API函数,使用该组件编写Tary程序不用加一句程序代码,真是易如反掌。
  首先,我们先看一下TrayIcon组件常用的属性:
 属性说明
Animate设为true时,顺序更改Icons属性设置的图标
AnimateInterva设置更改图标的时间(单位:毫秒)
Hide设为true时,最小化时隐藏在任务栏上的标题栏
Hint设置鼠标移动到Tary图标上出现的提示信息
IconIndex设置图标索引值
Icons设置图标源(通常设置一个ImageList组件)
PopupMenu设置要弹出的菜单(通常设置一个PopupMenu组件)
PopupMenuOn设置触发弹出菜单的鼠标操作
RestoreOn设置恢复最小化到正常状态的鼠标操作
Visible设为true时,在任务栏最右边显示图标


鼠标操作说明:
 
值说明
imClick鼠标单击
imDoubleClick鼠标双击
imLeftClickUp单击鼠标左键,放开
imLeftDoubleClick双击鼠标左键
imMouseDown按下鼠标键
imMouseUp按下鼠标键,放开
imNone不设置鼠标操作
imRightClickUp单击鼠标右键,放开
imRightDoubleClick双击鼠标右键


  TrayIcon组件的事件、方法就不多说了。


下面让我们来编一个简单的Tary程序:

1、新建工程,添加一个TrayIcon组件、一个PopupMenu组件和一个ImageList组件。它们的Name属性都用默认的名字:TrayIcon1、PopupMenu1、ImageList1。

2、设置TrayIcon1的属性,如下:
 属性值 linux
Animate true
AnimateInterva 1000
Hide true
Hint Tary演示程序
IconIndex 0
Icons ImageList1
Name TrayIcon1
PopupMenu PopupMenu1
PopupMenuOn imRightClickUp
RestoreOn imDoubleClick
Visible true


3、双击PopupMenu1,弹出菜单设计器,随意地加入几个菜单项。

4、双击ImageList1,加入支持的图片(*.ico、*.bmp)。  

  到此,不用编写一句程序代码,一个简单的Tary程序就做好了。按F9编译运行,将鼠标移动到Tary上面就会出现“Tary演示程序”的提示信息;在Tary上单击鼠标右键弹出菜单Popmenu1;按下程序窗口的最小化按钮,程序最小化后隐藏任务栏上的标题栏;双击Tary将会恢复程序最小化;而且,Tary图标以1000毫秒(1秒)的速度变换。够简单了吧?!

  TaryIcon组件的演示源程序在 Borland C++ Builder 5.0 安装目录下的CBuilder5ExamplesAppsTrayIcon。若你不想使用TaryIcon组件编写Tary,只想使用API函数,可以参考安装目录CBuilder5ExamplesControlsTraydemo下的源程序。

要在任务栏放图标,要用到Shell_NotifyIcon(DWORD dwMessage, PNOTIFYICONDATA pnid)函数。第二个参数是一个结构体,其中有一个回调消息,因此要自定义一个消息。
#define WM_NOTIFYICOM WM_USER+5
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_NOTIFYICOM, TMessage, NotifyIcom)
END_MESSAGE_MAP(TForm)
上三个语句是宏定义,具体用法,你可看帮助
接着就要写定义的WM_NOTIFYICOM 消息的响应函数。
//此函数用来响应鼠标在图标上的操作
void __fastcall TMainForm::NotifyIcom(Tmessage msg)
{
POINT MousePos;
switch(msg.LParam)
{
case WM_RBUTTONUP://响应右键
......
}
}
void __fastcall TMainForm::TrayMessage(DWORD dwMessage)
{
NOTIFYICOMDATA tnd;
tnd.cbSize=sizeof(NOTIFYICOMDATA);
tnd.hWnd=Handle;
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
//前面的程序就是为了实现这个回调消息
tnd.uCallbackMessage=WM_NOTIFYICOM;
//这个变量实现图标的加载
tnd.hIcon=myIcon-> Handle;
lstrcpyn(tnd.szTip, "my TrayIcom ", sizeof(tnd.tip));
return(Shell_NotifyIcon(dwMessage, &tnd));
}
大概就是这么做了,具体有不明的,你看书吧

补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,