level 2
神明银时
楼主
我现在虽然自己已经写了一个增加右键上下文关联菜单的程序了。
但是现在想输出菜单里所有的项目,发现只能输出一部分,上面的一部分输出不了,求问大概如何解决。
function TContextMenu.QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst,
idCmdLast, uFlags: UINT): HResult;
var
hbmReg: HBITMAP;
i:Integer;
begin
Result := 0; // or use MakeResult(SEVERITY_SUCCESS, FACILITY_NULL, 0);
begin if (uFlags and CMF_DEFAULTONLY) = CMF_DEFAULTONLY then
begin Result := Make_HResult(SEVERITY_SUCCESS, FACILITY_NULL, 0);
Exit;
end;
InsertMenu(Menu, indexMenu, mfSeparator, 0, nil);
InsertMenu(Menu, indexMenu, mfString, idCmdFirst + idCopyAnywhere, PChar(sCopyAnywhere));
InsertMenu(Menu, indexMenu, mfSeparator, 0, nil);
for I := 0 to 300 do
begin
list[i]:=GetMemory(1024);
GetMenuString(Menu,i,list[i],1024,MF_BYPOSITION);
//GetMenuString(Menu,3,str,1024,MF_BYPOSITION);
//StrList.Add(str);
end;
hbmReg := LoadImage(HInstance, MakeIntResource(101), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS);
SetMenuItemBitmaps(Menu, idCmdFirst + idCopyAnywhere, MF_BYCOMMAND, hbmReg,hbmReg);
Result := Make_HResult(SEVERITY_SUCCESS, FACILITY_NULL, idMenuRange);
end;
end;
从这里使用getmenustring得到菜单名字,

箭头部分是自己增加的项目。
最后输出
copy to...
Restore previous &versions
{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}
Se&nd to
{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}
Cu&t
&Copy
Create &shortcut
&Delete
Rena&me
{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}
P&roperties
{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}
{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}
请问这个输出的{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}是啥,还有为何上面的菜单名字不能输出呢?
2016年08月05日 09点08分
1
但是现在想输出菜单里所有的项目,发现只能输出一部分,上面的一部分输出不了,求问大概如何解决。
function TContextMenu.QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst,
idCmdLast, uFlags: UINT): HResult;
var
hbmReg: HBITMAP;
i:Integer;
begin
Result := 0; // or use MakeResult(SEVERITY_SUCCESS, FACILITY_NULL, 0);
begin if (uFlags and CMF_DEFAULTONLY) = CMF_DEFAULTONLY then
begin Result := Make_HResult(SEVERITY_SUCCESS, FACILITY_NULL, 0);
Exit;
end;
InsertMenu(Menu, indexMenu, mfSeparator, 0, nil);
InsertMenu(Menu, indexMenu, mfString, idCmdFirst + idCopyAnywhere, PChar(sCopyAnywhere));
InsertMenu(Menu, indexMenu, mfSeparator, 0, nil);
for I := 0 to 300 do
begin
list[i]:=GetMemory(1024);
GetMenuString(Menu,i,list[i],1024,MF_BYPOSITION);
//GetMenuString(Menu,3,str,1024,MF_BYPOSITION);
//StrList.Add(str);
end;
hbmReg := LoadImage(HInstance, MakeIntResource(101), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS);
SetMenuItemBitmaps(Menu, idCmdFirst + idCopyAnywhere, MF_BYCOMMAND, hbmReg,hbmReg);
Result := Make_HResult(SEVERITY_SUCCESS, FACILITY_NULL, idMenuRange);
end;
end;
从这里使用getmenustring得到菜单名字,

箭头部分是自己增加的项目。最后输出
copy to...
Restore previous &versions
{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}
Se&nd to
{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}
Cu&t
&Copy
Create &shortcut
&Delete
Rena&me
{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}
P&roperties
{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}
{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}
请问这个输出的{A4756F80-4AE7-4A1F-A776-F5E9D9B04406}是啥,还有为何上面的菜单名字不能输出呢?