怎样使菜单项具有弹出菜单?(100分)

  • 主题发起人 主题发起人 LoveDelphi
  • 开始时间 开始时间
L

LoveDelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
菜单项没有PopupMenu属性,而且菜单项只响应 OnClick、OnDrawItem、OnMeasureItem三个事件,无法响应鼠标右击。怎样才能实现在菜单上
单击鼠标右键,就弹出一个菜单呢?
 
菜单上还要用鼠标右键再触发一个菜单?你不觉的这样的菜单即使
做出来,也非常的不好用么?Your customer will be Crazy to you.

菜单窗口是自动关闭的,在失去FOCUS时,它就会自己关掉。当你右键
触发了第二层POPUPMENU时,你原来的那个菜单多半会自动关闭。那感觉
大概就如要同时按住两个要浮上来的水瓢。

 
y9y: win98的开始菜单不就是这样的吗?
 
http://www.gislab.ecnu.edu.cn/delphibbs/dispQ.asp?LID=203621
好象也没有结果
 
是呀!Win98的开始菜单就有这个功能,感觉挺方便的,
如果想要删除某个菜单项,只需在这个菜单项上单击
鼠标右键,在弹出菜单中选择删除即可,再也不用走
迷宫似的转来转去了.
 
cAkk:不对啊,开始菜单上的菜单项本身哪儿能用鼠标右键触发啊?
是START那个BUTTON可以用鼠标右键啊。

(事情要坏,连cAkk都说行,一定是歪就歪哪儿弄错了)
 
y9y,开始菜单的下级菜单(如程序子菜单)就是。
可我觉得开始菜单和普通菜单不一样,如菜单上的那个颜色渐变的"windows98",
还有就是这个弹出菜单。不知是不是MS在普通菜单上继承过来又增加其他特性,可那位大虾知道如何处理的呢?
 
那当然,'开始'菜单根本就不是菜单
 
不是菜单是什么?










 
你看看它的类名就知道了,反正不是菜单.
 
想简单, 找个第三方控件.
想自己做: 截取PopupList.Window指向HWND的wndproc. 在那里可以接受
鼠标消息. PopupList是个全局变量(D5, uses Menus后)
 
eyes: 如果用popuplist,我应该在哪个事件里setwindowlong,
在哪个事件里恢复OldWndPorc ?
 
现在好像wndproc设置成功了,但是为什么截获wm_RButtonUp不行?
应该截获哪个消息?
 
好像popuplist.window根本不接受鼠标消息???
 
cAkk,你怎么在自言自语呀?:-)
popuplist.window当然能接受鼠标消息。WM_RBUTTONDOWN可以。
最好是用WM_MENURBUTTONUP,这个消息连MSDN上也没有介绍。
 
o*o: 麻烦你写出完整代码出来,我的总是不行,多谢!

BTW: WM_MENURBUTTONUP 在message.pas里面就有
 
哦,忘了告诉你,要将menus.pas中的这句

TrackPopupMenu(FItems.Handle,
Flags[UseRightToLeftAlignment, FAlignment] or Buttons[FTrackButton],
改为下面的才有效。
TrackPopupMenu(FItems.Handle,
Flags[UseRightToLeftAlignment, FAlignment],//or Buttons[FTrackButton],

你再试试。这是DELPHI擅作主张的地方。
 

Similar threads

S
回复
0
查看
816
SUNSTONE的Delphi笔记
S
S
回复
0
查看
735
SUNSTONE的Delphi笔记
S
D
回复
0
查看
825
DelphiTeacher的专栏
D
D
回复
0
查看
831
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部