创建一个成员函数buttom1();
头文件加
afx_msg void buttom1();再在cpp文件中
BEGIN_MESSAGE_MAP()END_MESSAGE_MAP()
间加消息映射
如:
BEGIN_MESSAGE_MAP()ON_COMMAND(ID_1,buttom1)END_MESSAGE_MAP()其中ID_1为你菜单各项的ID,如"广东"的ID.最后在 void buttom1()
{}
加你的处理代码就可以啦

解决方案 »

  1.   

    例子,看看对你是不是有帮助http://blog.csdn.net/miaoshengwu/archive/2007/04/02/1549302.aspx
      

  2.   

    to:jinjinandpp(巫婆老公),这样的方法是不是很麻烦,如果我这个菜单包括很多节点,那岂不是要包括很多这样的函数,而且如果我的节点是动态从数据库取的话,这样的方法就不行了呀。
    to:miaoshengwu(孤单北半球),我看了那篇文章,非常感谢你,但那里主要是利用MFC的CMENU来做的,而我的程序则是利用HMENU来做的,现在我介绍一下我原来菜单的思路:首先我在resourceview中建立一个菜单IDR_MENU1,这是一个空的菜单资源,然后在我的对话框IDD_DIALOG1属性里的MENU选择IDR_MENU1作为该对话框的菜单,然后我在一个数据表中取一些树形记录,如广东省-广州市,顶级节点为地区,把这些数据放在这个菜单上,最后显示效果是地区-广东省-广州市,这个效果我已经实现了,用的是HMENU,之所以用这个主要是我不知道CMENU如何实现,代码如下:
    int CDialog1::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
       HMENU classmenu=::GetMenu(this->m_hWnd);  //这句话是获得当前对话框菜单的实例
       HMENU popmenu=::CreatePopupMenu(); 
       ::InsertMenu(classmenu, 1, MF_BYPOSITION|MF_STRING|MF_POPUP, UINT(popmenu), "地区");
       HMENU submenu=::GetSubMenu(classmenu,1);
       HMENU thirdmenu;
       ::InsertMenu(submenu,i,MF_BYPOSITION|MF_STRING|MF_POPUP,UINT(popmenu),"广东省");
       thirdmenu=::GetSubMenu(submenu,0);
       ::AppendMenu(thirdmenu,MF_STRING,1001,_T("广州市"));
       ::DrawMenuBar(this->m_hWnd);
    }
    请问我如何实现这个菜单的消息呢,请大家赐教!
      

  3.   

    补充一点,我后来又加了这样的代码:
    UINT uRetID=::TrackPopupMenu(classmenu,TPM_RETURNCMD,0,0,0,this->m_hWnd,(RECT*)NULL);
    switch(uRetID)
    {
      case 1001:MessageBox("您点中了1001");break;
    }
    但没有程序没有反应,我认为问题包括:
    1、TrackPopupMenu函数能不能这样用还是个大问题,其中的坐标值我没法给;
    2、这种做法既使捕捉到消息,也只能获取到点击广州市的消息,而无法获取广东省的消息,因为可以看到广东省没有ID值。
      请大家帮帮忙呀,先谢谢了。
      

  4.   

    ::TrackPopupMenu的返回值只是表明显示上下文菜单是否成功,而不是点击菜单的ID