这样的问题很简单,容易实现.其途径有两条:
1 每个控件都有一个ID,通过这个ID你就可以完全控制了这个button控件. 同样消息映射
也是通过这个ID来进行的.所以,假如你要做两个button,就在这button的你窗口针对这
两个ID做两个ONWMMOUSEMOVE映射.最终,每个按钮触发不同的消息处理函数.
2 上面所说,是现在通用做法.假如,真如你所说,要做10000000000个button.虽然有些荒
唐,不过真要这样,按照第一种做法,显然不可能.岂不是要映射10000000000处理函数.那
怎么办呢?你可以在CMYBUTTON中做映射,但是怎样处分不同的按钮呢?你必须要在该button
中加入一标识m_buttonID,这样在每次构造函数时,给它赋值. 现在消息处理函数就可以根据
这个m_buttonID做不同处理了.(实际中,没有这种需求)

解决方案 »

  1.   

    1 每个控件都有一个ID,通过这个ID你就可以完全控制了这个button控件. 同样消息映射也是通过这个ID来进行的.所以,假如你要做两个button,就在这button的父窗口中,针对这两个ID做两个ONWMMOUSEMOVE映射.最终,每个按钮触发不同的消息处理函数.(现在的MFC不就是这样的吗?)
      

  2.   

    假如你要做两个button,就在这button的你窗口针对这
    两个ID做两个ONWMMOUSEMOVE映射.
    请问这两个映射在哪个类中做?
    在CMYBUTTON类中的OnMOuseMove含数中根据ID号来判断的话就是我说的1000000个按钮怎么办?也就是说CMybutton类不可移植,难道这是MFC的优点吗?这样的MFC能用吗?在Button所在的窗口类映射我不知道怎么做希望指教?
      

  3.   

    假如你做基于对话框程序,那就在CMyDialog中做映射.
    1 加两个按钮button,每个按钮都有自己的ID
    2 子类化.(即建两个CMyButton对象,与控件关联起来)
    3 在类向导中,加入两个消息映射函数(即两个button)
    这总该会吧!
      

  4.   

    至于第二种方法,当然不是MFC当中的了.方法只是针对你的特殊要求...那个程序有这么多个button(10000000).就算你真的要去做,那你至少也要做10000000个函数
    去处理它.不管你采取什么方法?是消息映射也好,还是虚函数,或者是switch语句也好.
      

  5.   

    To Freelybird:
     谢谢你!
    这总该会吧!我是菜了请你详细给我讲一下?
    3 在类向导中,加入两个消息映射函数(即两个button)?
     怎样的两个消息映射函数?在类向导中这两个按钮根本没有WM_MOUSEMOVE消息映射?它们只有BN_CLICKED和BN_DOUBLECLICKED可以映射?
      

  6.   

    sorry,我忘了.
    button的WM_MOUSEMOVE消息确实没有作为notify通知消息去传递给父窗口.
    所以,没办法直接用MFC向导去映射.不过,实际中有这种需求吗?如果真的有这种需求的话,当初microsoft为什么不把这个
    消息通知加入控件中呢?那怎么办?你向模拟notify通知,向父窗口发送一个自定义消息(其中带参数this),以在
    父窗口中区分是那一个button对象.不过,你老兄真行,你到底在做什么东东呀!
      

  7.   

    说了半天,你还在鼓里真是的。不过,实际中有这种需求吗?如果真的有这种需求的话,当初microsoft为什么不把这个消息通知加入控件中呢?
    老兄我只是举了例子,EDIT,LISTBOX,COMBOBOX等等它们都没有MOUSEMOVE,MOUSEDOWN,MOUSEUP这样的映射,于用途您写过程序吗..... 我的目的是我新增的这个CMYBUTTON类能够移植我不想在CMYBUTTON这个类的ONMOUSEMOVE含数中写代码来判断ID号?
      

  8.   

    有一句你是说对了,我蒙在鼓里.我做梦也不想到,你要notification消息是mousemove.