代码如下:
BEGIN_MESSAGE_MAP(CPropertyList, CListBox)
//{{AFX_MSG_MAP(CPropertyList)
*****
//}}AFX_MSG_MAP
&&&&
END_MESSAGE_MAP()
请问 写在 //{{AFX_MSG_MAP(CPropertyList)
*****
//}}AFX_MSG_MAP
中 与 写在 //{{AFX_MSG_MAP(CPropertyList)
*****
//}}AFX_MSG_MAP
外有什么区别?请XDJM 指点 谢谢,也就是说 ****处与&&&&处的区别在哪里? 谢谢!

解决方案 »

  1.   

    ****处是在使用ClassWizard时自动添加的,&&&&是你自己添加的代码
      

  2.   

    这我知道的,我的意思是说  为什么 手工添加的要写到 &&& 处,我手工添加照样可以添加到 ***处啊,就是说 到底有什么区别,楼上的两位 好象还是没有把问题说清楚!请再说的明白点,谢谢!
      

  3.   

    BEGIN_MESSAGE_MAP/END_MESSAGE_MAP是vc编译器维护的一套宏,主要用于消息映身,写在这对宏中间的函数才能得到映身(成为消息处理结构体的一项),写在外面的话得不映身,处理不了消息。知道这个就差不多了,如果想知道这个“大”宏是怎么工作的,可以参考下候捷写的《深入浅出MFC》
      

  4.   

    同意zuozl和itmaster,因为我遇到过这个问题,如果自己写的话,很容易破坏其内部构造,但不是不能添加,因为如果你加全了的话,我是指要为了加这句话付出很大的代价,才能让
    wizard认识你要求,当然,你还得把他加到*****的地方!
      

  5.   

    同意楼上的
    //}}AFX_MSG_MAP  这些注释是在vc6里为使用classwizard 而设置的 如果写在外面对你的程序每有影响 但对用 classwizard 来维护你写在外面的有影响  在vc7 以后以后已不再适用这种方法了
      

  6.   

    你首先应注意两个地方
    1 大家知道, //{{AFX_MSG_MAP(CPropertyList) 是被注释掉的,就是从本质上说,它对代码是不会产生影像的,但是VC++编译器作为一个特资,可以感知到这个注释,从而帮助它维护classwizard和智能感知特性等
    2 *****的代码是灰色的(注意到没有?),就是提醒你这是编译器自动产生的,你最好不要动它,当然如果你非要动,则Wizard或智能感知就可能有问题