在上一篇教程中,我们已经实现了在资源管理器的右键菜单中增加自己的菜单项。本文中,笔者将介绍如何将自己的菜单项分组到子菜单中。如果需要添加的菜单项比较多,则使用子菜单将有助于提高右键菜单的友好性。
本文中的实例是在上一篇教程的基础上进行修改,在上一篇的基础上,增加一个菜单项用于使用记事本打开所选TXT文件,同时将我们在这两篇教程中添加的菜单项放到一个子菜单中。建议读者先完成上一篇教程。
一. 错误的方法
有过对菜单编程经验的读者可能很自然的想到,可以使用如下代码添加子菜单
HRESULT CShlExtObj::QueryContextMenu (HMENU hmenu,UINT uMenuIndex,UINT uidFirstCmd,UINT uidLastCmd,UINT uFlags ){if (uFlags & CMF_DEFAULTONLY)
return MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 0);
// 创建一个级联菜单
HMENU hSubMenu=CreatePopupMenu();// 将菜单项添加到子菜单中