还有另外一个弹出菜单的问题: 
这个是在网上找的例子,好像是不用加载菜单资源,觉得好一点 
void CCollDlg::OnRclickCollList(NMHDR* pNMHDR, LRESULT* pResult) //右键单击列表项处理函数 

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; 

}我在加了个消息处理函数来处理菜单项事件
ON_COMMAND(ID_MENU_DELE, OnMenuDele)                //就加了这个消息处理函数 

解决方案 »

  1.   

    这个ID_MENU_DELE 有没有 Resource Symbols对话框或者#define 定义?
      

  2.   

    可以你这个ID_MENU_DELE跟其他ID重了。直接在cpp中#define一个自定义的值看可以不
      

  3.   


    问题1:
    在Resource Symbols对话框中可以看到ID_MENU_DELE,但是标记显示是没有使用的.
    我没有在xx.h或xx.cpp文件中#define 定义ID_MENU_DELE.
    请问如果在Resource Symbols对话框中看到的ID或增加新的ID,是否还要在xx.h或xx.cpp文件中#define 定义该ID?问题2:
    在Resource Symbols对话框中可以看到的ID,标记显示,是没有使用的,是否可以删除?
      

  4.   

    1.如果通过Resource Symbols对话框的New添加了,就不需要#define了
    2.不能删,虽然标记没用,但是这个资源号还是被程序使用的,
      

  5.   

    还有请教关于菜单的消息处理函数方面!
    过程是这样的:
    1:
    这个ID_MENU_DELE是通过Resource Symbols对话框的New添加的.
    2:
    在xx.h文件添加了afx_msg void OnMenuDele();
    3:
    在xx.cpp文件添加了ON_COMMAND(ID_MENU_DELE, OnMenuDele) 
    4:
    xx::OnMenuDele(){...... } //增加消息函数处理体问题1:
    请问这样用手动添加这个消息处理是否可以?问题2:
    还有就是假如以上的过程是可以的话,我把该ID_MENU_DELE加到菜单项里,为什么会出现菜单项变灰?