1、我新建一个类,里面一个右键弹出动态生成的菜单,假设ID为(WM_USER + 1).然后这个类生成两个实例,则这两个实例的右键弹出菜单的菜单ID都为(WM_USER + 1),那会不会造成ID冲突或者关联呢?
PS:实验过是不会的,但不知道为什么?2、对于一个普通的非基于MFC的C++类,能不能添加消息响应呢?
因为BEGIN_MESSAGE_MAP( theClass, baseClass )里需要其基类。

解决方案 »

  1.   

    2.要响应消息就必须继承MFC的CCmdTarget类,除非你自己重写类似MFC中的三个消息映射宏
      

  2.   

    菜单ID?消息ID?楼主到底在搞哪个ID?
      

  3.   

    1、不知道你说的没有冲突是怎么回事,不过应该分辨不出到底是哪个实例的右键菜单产生的命令。
    2、不行的,BEGIN_MESSAGE_MAP实现了几个函数,并且会调用基类的对应名称函数,如果基类没有DECLARE_DYNAMIC、BEGIN_MESSAGE_MAP、END_MESSAGE_MAP的话,编译不过的。
      

  4.   

    对于一个普通的非基于MFC的C++类,能不能添加消息响应呢?
    比如在win32 下新建的项目 ,你做window编程。你可以编写方法 WndPro回调函数进行消息处理。然后做一个while循环进行消息的转换和传递
      

  5.   

    1、ID可以分配的一样,不过这两个菜单项的功能也一样了,你甚至可以把ToolBar上的ID也设的和菜单的ID相同,这样功能就一样了,就有一点,ON_COMMAND_UI则不会同时响应的,只能响应一个
      

  6.   


    如果这样的话,那一个多视图的MFC程序,各视图之间的ID都可以相等?
      

  7.   

    MFC中这样是不行的,因为有消息传递,会跨窗口传递的,会乱的
      

  8.   


    我的类继承了CCmdTarget类后,可以添加BEGIN_MESSAGE_MAP,时就出错了。
    那应该怎么样添加消息响应
      

  9.   

    ID一样做消息处理的时候就会出问题
    给菜单加什么消息?点击的消息是这么添加的
    在BEGIN_MESSAGE_MAP中
    ON_COMMAND(菜单ID, A类::响应函数)