我在对话框里加了菜单,然后没有为菜单添加新类,把菜单项的消息响应添加在对话框类里,然后在菜单的项的消息处理里写了句MessageBox,但是没有执行,有什么办法做到吗?????????

解决方案 »

  1.   

    没有错,可以执行啊!
    你看看有没有大意之处!步骤1:新建一个菜单资源,ID为IDR_MENU1;
    步骤2:在对话框资源点右键,选择Properties,在Menu选择处选择IDR_MENU1菜单;
    步骤3:在classwizard中Message Maps,选择对话框类,选中你菜单中的某个ID,生成COMMAND的消息响应,里面加入代码,就OK啦!
      

  2.   

    http://www.vckbase.com/document/viewdoc.asp?id=265
    在Dialog中使用Menu和Toolbar
      

  3.   

    可以呀,可以在对话框类里对该菜单进行事件处理:)
    你是怎么做的,我做了一个,增加了一个菜单,File->Close(Close的ID号是IDM_CLOSE),然后把菜单加入到对话框里:直接在对话框属性里的Menu里加入刚建好的Menu的ID号,再用ClassWizard为IDM_CLOSE创建消息处理事件函数:
    void CDlgDlg::OnClose() 
    {
    // TODO: Add your command handler code here
    ::AfxMessageBox ("Close");
    }
    当你点Close菜单时,就会弹出一个对话框:)
    你可以试试,从题目看不出你什么地方出了问题,建议重做一次,没准就好使了:)
      

  4.   

    不好意思了,是我没有说清楚,我的菜单是在一个button按下后,在button控件的下面显示的,这个要用到控件的子类化吧,或是你有更好的实现方法呢?我的Menu资源的ID是IDR_MENU1,我在对话框的构造涵数里这样写的:GetDlgItem(IDR_MENU1)->SubclassWindow(this->GetSafeHwnd);但是有错呀,有什么办法呢??
      

  5.   

    你应当在button的响应函数中添加api来显示menu,在classwizard里面添加菜单的响应函数,
    一下是在button的click事件中:
    CMenu muRoot;
    VERIFY(muRoot.LoadMenu(IDM_DATA_MUPRINT));
    CMenu *pPopupPrint = muRoot.GetSubMenu(0);
    ASSERT(pPopupPrint != NULL);
    pPopupPrint->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,this);
    pPopupPrint->DestroyMenu();没错,已经编译通过了。运行正常。
      

  6.   

    我本来想为菜单资源添加个类的,按下CTRL+W后,有新建类和是用已有类,我用新建类是,发现基类选项里没有CMenu,所以有选择添加到现有类,但是添加了处理后,在处理代码里写了句Messagebox,都不能实现,断点跟踪,发现跟本就没有下来。原因大概是内有和对话框关连,有办法吗????
      

  7.   

    昨天回家后试了试用.net来写,看来VC7把这个方面做的很好,但我的工程现在不太可能转换成VC7的,一转化就出很多的错了,所以还是用VC6,不知道有人能帮着解决吗?