想不想让自己的程序也和瑞星或金山词霸一样,启动后在托盘留下一个图标,以表示程序正在后台运行,如果你需要,且你还不知道如何下手,请您一步一步跟我走下来!
一、首先在*.h文件中加入以下声明:
#include
public:
TIcon *myIcon;
void virtual __fastcall IconClick(TMessage &Msg);
BEGIN_MESSAGE_MAP
MESSAGE _HANDLER (WM_USER+100,TMessage,IconClick)
END_MESSAGE_MAP(TForm1)
二、在*.cpp文件中加入以下代码:
构造函数中加入以下代码:
myIcon=new TIcon();
TNotifyIconData IconData;
myIcon->LoadFromFile("C:/data/icon.ico"); //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); //隐藏任务栏图标
析构函数:
TNotifyIconData IconData;
IconData.cbSize=Sizeof(IconData);
IconData.hwnd=Handle;
IconData.uID=100;
Shell_NotifyIcon(NIM_DELETE,&IconData); //删除托盘图标
delete myIcon;
托盘图标的单击事件:
void __fastcall TForm1::IconClick(TMessage &Msg)
{
TPoint po;
if(Msg.LParam==WM_LBUTTONDBLCLK) //执行你的左键双击事件
if(Msg.LParam==WM_RBUTTONDOWN) //右键弹出菜单
{
GetCursorPos(&po);
PopupMenu1->Popup(po.x,po.y);
}
}
以下程序段在Win200/XP C++Bulider6.0下调试通过!