gpt4 book ai didi

c++ - IContextMenu::QueryContextMenu 被调用,但 IContextMenu::InvokeCommand 没有

转载 作者:可可西里 更新时间:2023-11-01 10:59:56 25 4
gpt4 key购买 nike

在我的 IContextMenu 实现中COM 服务器,QueryContextMenu被调用(可以通过日志查看)但是 InvokeCommand没有。这是 QueryContextMenu:

HRESULT ContexMenuImp::QueryContextMenu(HMENU hmenu,UINT indexMenu,UINT idCmdFirst,
UINT idCmdLast,UINT uFlags)
{
if (uFlags & CMF_DEFAULTONLY) {
// shouldn't handle this situation:
LOG("IContextMenu::QueryContextMenu: (...,CMF_DEFAULTONLY)");
return MAKE_HRESULT(SEVERITY_SUCCESS,FACILITY_NULL,0);
}else if (InsertMenuItem(hmenu,indexMenu,TRUE,&globals.menuItemInfo) == FALSE){
// error occurred:
LOG("IContextMenu::QueryContextMenu: Error: %d",GetLastError());
return MAKE_HRESULT(SEVERITY_SUCCESS,FACILITY_NULL,0);
} else{
// the desired situation: add item to the menu:
LOG("IContextMenu::QueryContextMenu(hMenu,indexMenu:%u,idCmdFirst:%u,idCmdLast:%u,0x%x): All set...",
indexMenu,idCmdFirst,idCmdLast,uFlags);
return MAKE_HRESULT(SEVERITY_SUCCESS,FACILITY_NULL,1/*handle only a single item*/);
}
}

知道为什么吗?

最佳答案

您在插入菜单时忘记遵守 idCmdFirst

globals.menuItemInfo.wID = idCmdFirst;
globals.menuItemInfo.fMask |= MIIM_ID;

(所以我是对的:您添加了错误 ID 的菜单项。)

请注意,由于每个上下文菜单可能有不同的 ID,因此您不应使用全局 ID。

关于c++ - IContextMenu::QueryContextMenu 被调用,但 IContextMenu::InvokeCommand 没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7712568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com