大家来看看,一个任务栏图标编程问题。(100分)

  • 主题发起人 主题发起人 book523
  • 开始时间 开始时间
B

book523

Unregistered / Unconfirmed
GUEST, unregistred user!
我的问题是这样的:
我的程序是一个后台运行的程序,在任务栏中加了一个图标,当用鼠标右键单击图标时,
弹出一菜单,现在问题来了,就是我必须在菜单上单击一个菜单项,菜单才能消失,如果
弹出菜单后,不单击菜单项,而去做别的事情,则菜单一直不消失。有什么办法
能使当鼠标单击(不管左右键)别的地方时,菜单字段消失?
我做了一个试验,如果该程序的主窗体可见,在主窗体中单击鼠标,菜单可以消失,
可在别的地方(包括桌面)单击鼠标,菜单不消失?这是怎么回事?怎么解决?
 
嗯,很多程序都有这个毛病,包括声音的调节。我想你可以处理一下MouseMove。
 
我也有类似的问题。
 
由它去吧
 
处理mousemove事件?截获WM_MOUSEMOVE消息?
如果鼠标在别的程序中,能截获吗?还有弹出菜单怎么判断他弹出没有,怎么得到
它的所占区域?
 
这是Windows处理的,让它去吧!
 
if fPopupMenu<>nil then
begin
PopupMenu.PopupComponent := Self;
PopupMenu.Popup(MouseCo.x,MouseCo.y);
PostMessage(0,0,0,0);
end;

在菜单弹出时,发一条空消息就不出入上现象了!

在弹出PopupMenu之前先
SetForegroundWindow(handle);
这里handle是接收托盘消息的窗口句柄。

popup之前要bringtotop。
 
我用了一个控件实现了系统栏上的图标和菜单,不过没有这种情况啊!
 
我是自己编程实现的,
我试试bubble的方法
 
我用的是dxbarpopupmenu,没有PopupComponent属性啊,
发空消息也不行啊!
 
老兄,我也在寻找这个问题的解决办法,很久了,没有人回答.详细请看;
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1129074
 
在你显示菜单的时候:
procedure TMainForm.OnNotifyIcon(var Msg: TMessage);
var
pos: TPoint;
begin
case Msg.LParam of
.....................................
WM_RBUTTONDOWN :
begin
GetCursorPos(pos);
////////////////////////////////////////////
SetForegroundWindow (Application.Handle);
Application.ProcessMessages;
////////////////////////////////////////////
pmMain.Popup(pos.X, pos.Y);
end;
end;
end;
 
后退
顶部