有没有满足下面的条件的tray控件?
当鼠标在弹出的菜单之外的地方点击时,弹出菜单自动消失。
18 个解决方案
#1
我有一个告诉我你的邮箱我发给你。
#2
我用BCB自己编的也这样,不知到如何处理!好像不行!
#3
CB本身就有
在Sample页面,叫TrayIcon。(注:C++Builder5.0才有)
在Sample页面,叫TrayIcon。(注:C++Builder5.0才有)
#4
to chenwanchun()
lluunn_cn@sina.com.cn
lluunn_cn@sina.com.cn
#5
BCB5自己好像有一个呀,很好用的
#6
BCB5自带的很好用,没什么问题啊
#7
void __fastcall TfrmLogHook::SelectTrayTcon(DWORD Add)
{
if(Add==NIM_ADD)
{
NOTIFYICONDATA icondata;
memset(&icondata,0,sizeof(icondata));
icondata.cbSize=sizeof(icondata);
icondata.hWnd=Handle;
strncpy(icondata.szTip,"和尚纪录间谍",sizeof(icondata.szTip));
icondata.hIcon=Application->Icon->Handle;
icondata.uCallbackMessage=iconmessage;
icondata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
Shell_NotifyIcon(Add,&icondata);
}
else if(Add==NIM_DELETE)
{
NOTIFYICONDATA icondata;
memset(&icondata,0,sizeof(icondata)); //将结构icondata的各域初始化为0
icondata.cbSize=sizeof(icondata);
icondata.hWnd=Handle;
Shell_NotifyIcon(NIM_DELETE,&icondata);
}
}
{
if(Add==NIM_ADD)
{
NOTIFYICONDATA icondata;
memset(&icondata,0,sizeof(icondata));
icondata.cbSize=sizeof(icondata);
icondata.hWnd=Handle;
strncpy(icondata.szTip,"和尚纪录间谍",sizeof(icondata.szTip));
icondata.hIcon=Application->Icon->Handle;
icondata.uCallbackMessage=iconmessage;
icondata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
Shell_NotifyIcon(Add,&icondata);
}
else if(Add==NIM_DELETE)
{
NOTIFYICONDATA icondata;
memset(&icondata,0,sizeof(icondata)); //将结构icondata的各域初始化为0
icondata.cbSize=sizeof(icondata);
icondata.hWnd=Handle;
Shell_NotifyIcon(NIM_DELETE,&icondata);
}
}
#8
void __fastcall TfrmLogHook::FormCreate(TObject *Sender)
{
iconmessage=RegisterWindowMessage("IconNotify");
SelectTrayTcon(NIM_ADD);
}
//---------------------------------------------------------------------------
void __fastcall TfrmLogHook::FormDestroy(TObject *Sender)
{
SelectTrayTcon(NIM_DELETE);
}
{
iconmessage=RegisterWindowMessage("IconNotify");
SelectTrayTcon(NIM_ADD);
}
//---------------------------------------------------------------------------
void __fastcall TfrmLogHook::FormDestroy(TObject *Sender)
{
SelectTrayTcon(NIM_DELETE);
}
#9
想楼上xycleo()虚竹和尚() 大哥说的那样,我做过,效果可以,你试试!
#10
看看例程
#11
怎样响应tray icon上的鼠标消息?
#12
void __fastcall TfrmLogHook::WndProc(Messages::TMessage&Message)
{ //重载wndproc,处理个各种系统消息
POINT MousePos;
if(Message.Msg==iconmessage)
{
if(Message.LParam==WM_LBUTTONDBLCLK)
{
Application->Terminate();//如果双击图标,则关闭应用程序
}
else if(Message.LParam==WM_LBUTTONDOWN)
{
Show();
}
else if(Message.LParam==WM_RBUTTONUP)
{
if (GetCursorPos(&MousePos))
{
PopupMenu1->PopupComponent=frmLogHook;
SetForegroundWindow(Handle);
PopupMenu1->Popup(MousePos.x, MousePos.y);
}
}
return;
}
TForm::WndProc(Message);//对于其他的消息,调用基础类的WndProc函数让Windows进行缺省处理。
}
{ //重载wndproc,处理个各种系统消息
POINT MousePos;
if(Message.Msg==iconmessage)
{
if(Message.LParam==WM_LBUTTONDBLCLK)
{
Application->Terminate();//如果双击图标,则关闭应用程序
}
else if(Message.LParam==WM_LBUTTONDOWN)
{
Show();
}
else if(Message.LParam==WM_RBUTTONUP)
{
if (GetCursorPos(&MousePos))
{
PopupMenu1->PopupComponent=frmLogHook;
SetForegroundWindow(Handle);
PopupMenu1->Popup(MousePos.x, MousePos.y);
}
}
return;
}
TForm::WndProc(Message);//对于其他的消息,调用基础类的WndProc函数让Windows进行缺省处理。
}
#13
BCB5自带的那个Tray在哪个栏目下?没找到。
注:用Shell API写Tray程序我会,只是想省点事情。谢谢!
netguy2000@163.com
注:用Shell API写Tray程序我会,只是想省点事情。谢谢!
netguy2000@163.com
#14
学习学习了!
#15
学习学习了!
#16
学习学习了!
#17
BCB5自带的那个Tray在 sample选项卡.
#18
奇怪,我的BCB5中Samples栏目下面是空的,所以这个栏目没显示出来。
#1
我有一个告诉我你的邮箱我发给你。
#2
我用BCB自己编的也这样,不知到如何处理!好像不行!
#3
CB本身就有
在Sample页面,叫TrayIcon。(注:C++Builder5.0才有)
在Sample页面,叫TrayIcon。(注:C++Builder5.0才有)
#4
to chenwanchun()
lluunn_cn@sina.com.cn
lluunn_cn@sina.com.cn
#5
BCB5自己好像有一个呀,很好用的
#6
BCB5自带的很好用,没什么问题啊
#7
void __fastcall TfrmLogHook::SelectTrayTcon(DWORD Add)
{
if(Add==NIM_ADD)
{
NOTIFYICONDATA icondata;
memset(&icondata,0,sizeof(icondata));
icondata.cbSize=sizeof(icondata);
icondata.hWnd=Handle;
strncpy(icondata.szTip,"和尚纪录间谍",sizeof(icondata.szTip));
icondata.hIcon=Application->Icon->Handle;
icondata.uCallbackMessage=iconmessage;
icondata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
Shell_NotifyIcon(Add,&icondata);
}
else if(Add==NIM_DELETE)
{
NOTIFYICONDATA icondata;
memset(&icondata,0,sizeof(icondata)); //将结构icondata的各域初始化为0
icondata.cbSize=sizeof(icondata);
icondata.hWnd=Handle;
Shell_NotifyIcon(NIM_DELETE,&icondata);
}
}
{
if(Add==NIM_ADD)
{
NOTIFYICONDATA icondata;
memset(&icondata,0,sizeof(icondata));
icondata.cbSize=sizeof(icondata);
icondata.hWnd=Handle;
strncpy(icondata.szTip,"和尚纪录间谍",sizeof(icondata.szTip));
icondata.hIcon=Application->Icon->Handle;
icondata.uCallbackMessage=iconmessage;
icondata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
Shell_NotifyIcon(Add,&icondata);
}
else if(Add==NIM_DELETE)
{
NOTIFYICONDATA icondata;
memset(&icondata,0,sizeof(icondata)); //将结构icondata的各域初始化为0
icondata.cbSize=sizeof(icondata);
icondata.hWnd=Handle;
Shell_NotifyIcon(NIM_DELETE,&icondata);
}
}
#8
void __fastcall TfrmLogHook::FormCreate(TObject *Sender)
{
iconmessage=RegisterWindowMessage("IconNotify");
SelectTrayTcon(NIM_ADD);
}
//---------------------------------------------------------------------------
void __fastcall TfrmLogHook::FormDestroy(TObject *Sender)
{
SelectTrayTcon(NIM_DELETE);
}
{
iconmessage=RegisterWindowMessage("IconNotify");
SelectTrayTcon(NIM_ADD);
}
//---------------------------------------------------------------------------
void __fastcall TfrmLogHook::FormDestroy(TObject *Sender)
{
SelectTrayTcon(NIM_DELETE);
}
#9
想楼上xycleo()虚竹和尚() 大哥说的那样,我做过,效果可以,你试试!
#10
看看例程
#11
怎样响应tray icon上的鼠标消息?
#12
void __fastcall TfrmLogHook::WndProc(Messages::TMessage&Message)
{ //重载wndproc,处理个各种系统消息
POINT MousePos;
if(Message.Msg==iconmessage)
{
if(Message.LParam==WM_LBUTTONDBLCLK)
{
Application->Terminate();//如果双击图标,则关闭应用程序
}
else if(Message.LParam==WM_LBUTTONDOWN)
{
Show();
}
else if(Message.LParam==WM_RBUTTONUP)
{
if (GetCursorPos(&MousePos))
{
PopupMenu1->PopupComponent=frmLogHook;
SetForegroundWindow(Handle);
PopupMenu1->Popup(MousePos.x, MousePos.y);
}
}
return;
}
TForm::WndProc(Message);//对于其他的消息,调用基础类的WndProc函数让Windows进行缺省处理。
}
{ //重载wndproc,处理个各种系统消息
POINT MousePos;
if(Message.Msg==iconmessage)
{
if(Message.LParam==WM_LBUTTONDBLCLK)
{
Application->Terminate();//如果双击图标,则关闭应用程序
}
else if(Message.LParam==WM_LBUTTONDOWN)
{
Show();
}
else if(Message.LParam==WM_RBUTTONUP)
{
if (GetCursorPos(&MousePos))
{
PopupMenu1->PopupComponent=frmLogHook;
SetForegroundWindow(Handle);
PopupMenu1->Popup(MousePos.x, MousePos.y);
}
}
return;
}
TForm::WndProc(Message);//对于其他的消息,调用基础类的WndProc函数让Windows进行缺省处理。
}
#13
BCB5自带的那个Tray在哪个栏目下?没找到。
注:用Shell API写Tray程序我会,只是想省点事情。谢谢!
netguy2000@163.com
注:用Shell API写Tray程序我会,只是想省点事情。谢谢!
netguy2000@163.com
#14
学习学习了!
#15
学习学习了!
#16
学习学习了!
#17
BCB5自带的那个Tray在 sample选项卡.
#18
奇怪,我的BCB5中Samples栏目下面是空的,所以这个栏目没显示出来。