1,
void CODrawCombo::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
DWORD dwStyle = ::GetWindowLong( m_hWnd, GWL_STYLE );//我在这一句打了个断点,可是断点一直没有被触发
ASSERT( dwStyle & CBS_DROPDOWNLIST ); //m_pDrawC->MeasureItem(lpMeasureItemStruct);
lpMeasureItemStruct->itemHeight=30;//这里无论改成多大的值都没有起作用。
}这个函数好象没有起作用?
2,自绘控件在DrawItem和OnDrawItem方法里绘制有什么区别?

解决方案 »

  1.   

    第一个问题的话。你设置自绘了么?如果自绘的话,你往控件里面增加数据了么
    比如
    ListBox::InsertItem(0,...)之类的ComboBox如果自绘是固定高度,则MeasureItem只调用一次,如果是变高,则MeasureItem会在每个元素加入时调用2. DrawItem是CWnd的一个虚函数,而OnDrawItem是对消息WM_DRAWITEM的响应,具体的区别……不太知道,我感觉
    OnDrawItem是先被调用的,调用完成了调用DrawItem,只是感觉,楼主可以设两个断点跟进去看看
      

  2.   

    你是不是勾选了listbox的“所有者绘制固定”
      

  3.   

    要重绘,首先必须设置COMBOBOX为CBS_OWNERDRAWVARIABLE 或CBS_OWNERDRAWFIXED。