怎样得知POPUPMENU正在打开着?(100分)

  • 主题发起人 主题发起人 o*o
  • 开始时间 开始时间
O

o*o

Unregistered / Unconfirmed
GUEST, unregistred user!
即:如何得知某个POPUPMENU当前正显示在屏幕上?
 
popup这种东西一失去焦点就没了,有这个必要吗?
 
我要用程序使它消失。
比如用户打开一个POPUPMENU后,在一定时间里没有点击菜单,就自动收起。
 
何必用popmenu,可以自己编写一个弹出对话框。
 
WM_ENTERMENULOOP//menu进入showmodal循环
WM_EXITMENULOOP//离开循环
WM_INITMENU//初始化menu
WM_INITMENUPOPUP//初始化popmenu
你的程序响应这几个消息,after menu init 记数,exitmenuloop 清零,
timer检查记数,>n,destroy menu.
 
对了如果是自己写的程序,在popmenu的onpopup事件里记数,menuitem
click 里清零 timer check count,if >n destroy menu.
 
不行,popupmenu失去焦点就消失。所以可能应在在popmenu的onpopup事件里记数,
及记下位置,timer check count ,if >n then MenuItemFromPoint(previous
point) if true then setfocus to form to make menu disappear;
 
注意application.OnIdel事件
 
实际上 PostMessage(Handle,WM_LBUTTONDOWN,0,0); 就可让菜单消失。

但我更想知道POPUPMENU当前的状态。
 
解决了。

aBool:=True;
TrackPopupMenu(PopupMenu1.Handle, ...);
aBool:=False;

在其它事件里:
if aBool then PostMessage(Handle,WM_LBUTTONDOWN,0,0);

这个问题竟然如此简单。没想到。

感谢各位:hubdog:,cAkk:
 

Similar threads

后退
顶部