BCB如何将应用程序图标写到系统托盘中
来源:互联网 发布:东莞市乐其网络可信吗? 编辑:程序博客网 时间:2024/05/14 13:05
1、新建一个工程,将工程存到目录D:/BCBTray下,并在这个目录下拷入一个icon图标文件,文件名为Icon1.ico,作为本程序的系统托盘处的图标。 __fastcall ~TForm1();
2、在这个工程中再增加一个窗体Form2,要注意的是这个工程中,Form1是启动窗体,它负责系统托盘图标的总控工作,并不负有其它责任。应用程序的主窗口是由Form2 来负责的。在Form1的代码窗Unit1.cpp增加如下代码:
#include "Unit2.h"
3、将Form1的BorderStyle属性设置为bsNone
4、在Form1的OnShow事件写如下代码:
void __fastcall TForm1::FormShow(TObject *Sender)
{
Form1->Width=0;
}
5、在Form1中增加一个PopupMenu1,并为它增加一个子菜单:它的两个菜单条为:显示网址管理专家、退出程序。
为“显示网址管理专家”写如下单击事件:
void __fastcall TForm1::N1Click(TObject *Sender)
{
Form2->Show();
}
为“退出程序”写如下单击事件:
void __fastcall TForm1::N2Click(TObject *Sender)
{
Form1->Close();
}
6、在Form1的代码头文件Unit1.h中的TForm1的类定义的public成员函数中写下如下代码:
__fastcall ~TForm1();
TIcon *MyIcon;
void virtual __fastcall IconClick(TMessage& Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_USER+100,TMessage,IconClick)
END_MESSAGE_MAP(TForm)
这样,TForm1的类定义全貌为:
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPopupMenu *PopupMenu1;
TMenuItem *N1;
TMenuItem *N2;
void __fastcall N1Click(TObject *Sender);
void __fastcall N2Click(TObject *Sender);
void __fastcall FormShow(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
TIcon *MyIcon;
void virtual __fastcall IconClick(TMessage& Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_USER+100,TMessage,IconClick)
END_MESSAGE_MAP(TForm)
};
7、在Unit1.cpp中的窗体的构造函数中写如下代码:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
MyIcon=new TIcon();
TNotifyIconData IconData;
MyIcon->LoadFromFile("Icon1.ico");
IconData.cbSize=sizeof(IconData);
IconData.hWnd=Handle;
IconData.uID=100;
IconData.hIcon=MyIcon->Handle;
IconData.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;
IconData.uCallbackMessage=WM_USER+100;
strcpy(IconData.szTip,"网址管理专家 单击左键显示窗体");
Shell_NotifyIcon(NIM_ADD,&IconData);
SetWindowLong(Application->Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
}
8、在Unit1.cpp中的窗体的析构函数中写如下代码:
__fastcall TForm1::~TForm1()
{
TNotifyIconData IconData;
IconData.cbSize=sizeof(IconData);
IconData.hWnd=Handle;
IconData.uID=100;
Shell_NotifyIcon(NIM_DELETE,&IconData);
delete MyIcon;
}
9、在Unit1.cpp中写窗体的公用成员函数IconClick代码:
void __fastcall TForm1::IconClick(TMessage& Msg)
{
TPoint po;
if(Msg.LParam==WM_LBUTTONDOWN)
{
Form2->Show();
}
if(Msg.LParam==WM_RBUTTONUP)
{
GetCursorPos(&po);
PopupMenu1->Popup(po.x,po.y);
}
}
10、由于Shell_NotifyIcon函数定义在ShellAPI.hpp文件中所以请将下面一句写到Unit1.h中:
#include <shellapi.hpp>
11、现在运行程序,系统图标就写到托盘中去了。
正文
- BCB如何将应用程序图标写到系统托盘中
- VC++6.0中实现将应用程序的图标加入到Windows的系统托盘中
- VC++6.0中实现将应用程序的图标加入到Windows的系统托盘中
- 将应用程序最小化到系统托盘
- VC增加应用程序图标到系统托盘
- 如何在系统托盘(panel)中显示应用程序图标和气球帮助信息(balloon tooltips)
- 如何将窗口最小化到系统托盘
- MFC将程序添加到系统图标栏,系统托盘栏
- 如何设置系统托盘图标
- [VB.NET]如何将图标放在系统托盘上
- jframe将程序图标写到任务栏中
- 应用程序最小化到系统托盘
- 如何将字符串写到文件中?
- 如何将kylix加入到系统托盘(gtkplug)
- 应用程序最小化到系统托盘示例
- 为自己的应用程序添加系统托盘图标
- win32创建应用程序的系统托盘图标
- Java桌面应用程序创建系统托盘图标
- jboss5.1.0 eclipse galileo 远程调试
- 江苏省高等学校服务性收费和代收费管理暂行办法
- 今天是第四天上班
- 安装Apache
- 一个VB2005的面试题的理解
- BCB如何将应用程序图标写到系统托盘中
- 基于MDI和CFormView框架的多视图开发实例
- 天气好晴朗
- 将vs2008 项目转换VS2005解决方案
- SSDT原始地址, 现在地址
- 中国省份简称
- IE中怎么会出现双倍边距?-DivCSS教程
- MBTI职业测评!世界500强企业有80%引入的性格测试!
- 运算放大器的单电源供电方法