如何动态将其它的PopupMenu设定成某个MenuItem的子菜单? |
尚未結案
|
circusmonkey
一般會員 發表:6 回覆:10 積分:8 註冊:2004-06-28 發送簡訊給我 |
小弟有一疑问:
我现在有2个PopupMenu - Menu1、Menu2。
我希望当Menu1弹出时,它的第一个MenuItem拥有一个子菜单,而这个子菜单就是已经创建的Menu2。
Menu1 >
|- MenuItem11 >
|- MenuItem21(来自Menu2) 目前我使用的方法是:
var
AItem: TMenuItem;
begin
AItem := Menu2.Items;
Menu1.Insert(0, AItem);
end; 我不希望通过复制菜单的方法,把Menu2下面的所有内容都复制到指定位置,因为复制时可能会遗漏信息。
但是上述做法有个bug:无法兼容Unicode。当我使用TntControls进行扩展时,AItem.Caption将变成乱码。 我在网上有看见过通过API的方法修改MenuItem的子菜单的方法。但似乎对以及一级菜单无效,但对二级菜单有效。也就是说,我可以实现:
Menu1 >
|- MenuItem1 >
|- 无用的二级菜单 >
|- MenuItem21(来自Menu2)
我无法将上图中的“无用的二级菜单”给去掉。 实现上述方法的代码。
var
Info: TMenuItemInfo;
begin
Info.cbSize := 44;
Info.fMask := MIIM_STRING or MIIM_SUBMENU;
Info.dwTypeData:= PAnsiChar('无用的二级菜单');
Info.hSubMenu := Menu2.Handle;
InsertMenuItem(MenuItem1.Handle, 0, True, Info);
end; 请教各位,如下代码究竟问题出在什么地方?
var
Info: TMenuItemInfo;
begin
Info.cbSize := 44;
Info.fMask := MIIM_SUBMENU;
Info.hSubMenu := Menu2.Handle;
InsertMenuItem(Menu1.WindowHandle, 0, True, Info);
end; 發表人 - circusmonkey 於 2005/06/20 08:09:30 發表人 - circusmonkey 於 2005/06/20 08:10:56
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |