CWnd::GetMenu()的问题 问:我有个程序用下面代码: CWnd *pWnd = CWnd::GeForegroundWindow(); if (pWnd == NULL) return FALSE; Cmenu *pMenu = pWnd->GetMenu(); if (pMenu == NULL) return FALSE; for (int I = 0; I GetMenuItemCount; I++) { pMenu->GetMenuItemID(...); pMenu->GetMenuString(...); } 上述代码工作除了在IE窗口外,别的窗口工作都很正常,请问怎样才能在IE 窗口中 正常使用,如果不是用这种方法,那又该用什么方法? 答:IE有一个定义菜单,是用自定义系列控件中的弹出菜单。所以你就不能再 使用枚举这 种方法了,试一下处理WM_INITMENUPOPUP或WM_INITMENU。在VC的CD 中有类似的例子(关于 剪切与复制)你得到消息句柄时就可以列出所有的菜 单项。上面的代码之所不工作可能是 因为微软的自画菜单项的保存菜单项用 了不同的格式,想要明白菜单和画标是否是自画的, 你可以用这种方法测 试lpmii->fType & MFT_OWNERDRAW.Ipmii是一个菜单结构,返回得到 的菜单 项信息。Lpmii->dwTypeData 返回(菜单)项目的类型,如果dwTypeData返 回的值没有什么 用的话还有一个机会,lpmii->dwItemData将指向一个(程序) 开始时的菜单项中的字符串 结构。以上方法比较好,因为现在好多程序都 使用自定义菜单。