在vckbase里看到一个自绘列表的程序
  BEGIN_MESSAGE_MAP(CListCtrlCl, CListCtrl)
ON_WM_MEASUREITEM()
ON_WM_MEASUREITEM_REFLECT()
  END_MESSAGE_MAP()
  怎么同时出现了两个 ?有什么作用 对应的响应函数是什么?

解决方案 »

  1.   

    ON_WM_MEASUREITEM_REFLECT() 
    是让子窗口也相应WM_MEASUREITEM消息
      

  2.   

    CListCtrlCl自己响应WM_MEASUREITEM消息了
      

  3.   

    你说的是 ON_WM_MEASUREITEM_REFLECT() 
    那ON_WM_MEASUREITEM()这个是响应什么呢?
      

  4.   

    ON_WM_MEASUREITEM消息映射ClistCtrl是不会响应的,你调试跟踪下就会发现,程序不会执行到里面去
    只有用第二个映射的时候才会反应,
      

  5.   

    这两个消息对应的响应函数分别是什么呢?
      在这里到底有没有必要用ON_WM_MEASUREITEM这个
      

  6.   


    ON_WM_MEASUREITEM 的响应函数是afx_msg void OnMeasureItem( LPMEASUREITEMSTRUCT );
    ON_WM_MEASUREITEM_REFLECT() 的响应函数是 afx_msg void MeasureItem ( LPMEASUREITEMSTRUCT lpMeasureItemStruct );一般用ON_WM_MEASUREITEM_REFLECT()就行了。不需要ON_WM_MEASUREITEM
      

  7.   

    能接受ON_WM_MEASUREITEM 这个是干什么用的吗?
      

  8.   

    ON_WM_MEASUREITEM 的响应函数是afx_msg void OnMeasureItem( LPMEASUREITEMSTRUCT ); 
    ON_WM_MEASUREITEM_REFLECT() 的响应函数是 afx_msg void MeasureItem (LPMEASUREITEMSTRUCT lpMeasureItemStruct ); 除了8楼讲了这点外,我觉得这里还应该提到的问题是:
       当子控件创建时向,会向它的所有者发送这个消息,但我们可以利用消息反射使子控件来处理这个消息,所以那俩个放在一起时,最终消息都还是由子控件来处理的,所以我认为有了ON_WM_MEASUREITEM_REFLECT,就完全没有必要存在 ON_WM_MEASUREITEM了。