在VS2008中使用vc时候添加快捷菜单,首先利用资源管理器添加一个菜单: 
选择IDR_MENU1菜单,如下图:

具体代码如下:
在窗体框架中添加
class MyFrame : public CFrameWnd
{
private:
CMenu MainMenu, *SysMenu, *PopMenu, *SubMenu;
COLORREF color;
public:
MyFrame()
{
//构造函数
}
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point)//主要实现函数
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
PopMenu = menu.GetSubMenu(0);
//ClientToScreen(&point);
PopMenu->TrackPopupMenu(TPM_CENTERALIGN | TPM_RIGHTBUTTON,
point.x, point.y, this);
menu.Detach();
}
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)
ON_WM_CONTEXTMENU()
END_MESSAGE_MAP()
class MyApp : public CWinApp
{
public:
BOOL InitInstance()
{
CFrameWnd * Frame = new MyFrame;
m_pMainWnd = Frame;
Frame->ShowWindow(SW_SHOW);
return true;
}
}a_app;
点击右键就可以显示出快捷菜单。
菜单项属性对话框:几组选项
ID(菜单项的ID):一般情况下,菜单的ID取值应遵循以下原则:ID_顶层菜单名_下一级菜单项名(_再下一级菜单项名)。如:ID_LOLOR_RED. 注:弹出菜单不需要ID号。
Caption(菜单项的名称):可以英文,中文,数字,符号等。注:用户可以在Caption文本框中定义某个菜单项的快捷键,在菜单标题中响应的字母前输入“&”即可。如果菜单是中文,就必须用小括号把快捷键的说明括起来,如:“新建”菜单项的快捷键使用“(&N)”定义。提示:Caption 文本框中还有一串字符“\tCtrl+N”,这是用来表明该菜单项的加速键。加速键可以在不打开菜单的情况下直接执行菜单项。
Separtor(分隔线)复选框:选中该复选框,则菜单项变成一个分隔线,而原有菜单项丢失。如果用户想在已添加一条分隔线,可以先用鼠标拖动空白菜单到需要分隔线的位置,然后将这个空白菜单选择【Separator】复选框即可。
Pop-up(弹出式)复选框:选择此复选框,菜单项将变成弹出式菜单,即单击此菜单会弹出下一级子菜单。Visual C++6.0 默认顶层菜单为弹出式菜单。
Inactive(不活动)复选框:选中此复选框表面菜单项的初始状态为非活动状态。
Checked(检查标记)复选框:此复选框是菜单初始值的检查标记。选择该复选框,会在菜单项的左边打上一个钩。
Grayed(变灰)复选框:选中此复选框,该菜单项将以灰色显示,表明菜单的初始状态为不可访问。如果该复选框被选中,那么菜单一定是不活动的,所以,此时Inactive复选框不可用。
Help(帮助形式)复选框:选中此复选框,菜单会出现在菜单栏的右侧。
Break(菜单项的分割):当一个菜单的菜单项过多时,放在一列当中会感觉很长很拥挤。此时可以考虑把他分成两列来显示。Break就起到了这个作用。Break选项对应一个组合框,共有三种选择形式,分别是None、Column和Bar。
None:系统默认选项,表示不分割。
Column:列分割。选中此项时,从选中的菜单项一下的菜单项将另起一行。例如,将【文件】菜单中的【打印】菜单项选中此项的结果。
并列格式:和Column类似,也是列分割。只不过与 Column不同的是,两列之间有一条竖线将他们隔开。
文本框:在Prompt后面的文本框中可以输入文本。在程序运行时,当鼠标移到菜单项上时,在底部的状态栏将给出此菜单的功能提示。