该弹出菜单不能根据条件来使菜单变灰!void CMainFrame::OnRclickTree(NMHDR* pNMHDR, LRESULT* pResult) //树表项右键单击处理函数
{
// TODO: Add your control notification handler code here
if(m_wndTree.GetCount() && m_wndTree.GetSelectedItem())
{
CMenu xpMenu;
POINT point;
GetCursorPos(&point);
VERIFY(xpMenu.LoadMenu(IDR_MENU_DOC));     //这里是在菜单资源做的
CMenu *menu=(CMenu*)xpMenu.GetSubMenu(0);
UINT nEnable;
HTREEITEM hItem=m_wndTree.GetSelectedItem();
int nIsDoc=m_wndTree.GetItemData(hItem); if(nIsDoc!=-1)                 //根据这个条件来激活菜单项
{
nEnable = MF_BYCOMMAND | MF_ENABLED;
}
else
{
nEnable = MF_BYCOMMAND | MF_GRAYED;
} menu->EnableMenuItem(ID_MENU_OPEN, nEnable); //问题是,这堆都无反应!不能变灰色
menu->EnableMenuItem(ID_MENU_ADD, nEnable);
menu->EnableMenuItem(ID_MENU_DEL, nEnable);
menu->EnableMenuItem(ID_MENU_TYPE, nEnable);

menu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,this, NULL);
xpMenu.DestroyMenu();
}

*pResult = 0;
}
还有另外一个弹出菜单的问题:
这个是在网上找的例子,好像是不用加载菜单资源,觉得好一点void CCollDlg::OnRclickCollList(NMHDR* pNMHDR, LRESULT* pResult) //右键单击列表项处理函数
{
// TODO: Add your control notification handler code here
if(m_CollList.GetItemCount())
{
POINT point;
GetCursorPos(&point);
CPopupMenu cMenu;
cMenu.CreatePopupMenu();

cMenu.AppendMenu(MF_STRING, ID_MENU_DELE, _T("删除")); //问题是这个ID(原来是另外的ID是可以到达消息处理函数)到我改了之后就那弹出的菜单项总是变灰!

cMenu.LoadToolBarResource(IDR_TABVIEW_MENU); //这个ID不是菜单资源!我在Resource Symbols对话框里查过,是有该IDR_TABVIEW_MENU存在,但是标记显示是没有使用的
cMenu.RemapMenu(&cMenu);
cMenu.EnableMenuItems(&cMenu, AfxGetMainWnd());

::SetMenuDefaultItem(cMenu.m_hMenu, 0, TRUE);

cMenu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());

cMenu.DestroyMenu();
*pResult = 0;
}
}我在这里加了个消息
在.h
//{{AFX_MSG(CCollDlg)
         afx_msg void OnRclickCollList(NMHDR* pNMHDR, LRESULT* pResult);
         afx_msg void OnMenuDele();//}}AFX_MSG在.cpp
BEGIN_MESSAGE_MAP(CCollDlg, CDialog) //{{AFX_MSG_MAP(CCollDlg) ON_NOTIFY(NM_RCLICK, IDC_COLL_LIST, OnRclickCollList)
         ON_COMMAND(ID_MENU_DELE, OnMenuDele)                //就加了这个消息处理函数 //}}AFX_MSG_MAP
END_MESSAGE_MAP()请问这个菜单例子是我的消息搞错,还是其它问题??