我想用c/sdk listview得到下面的效果,有人说做表头需要自绘,创建时还要加LVS_OWNERDRAWFIXED类型,然后处理父窗口的WM_DRAWITEM消息。哪位能帮帮忙给个例子代码? 最好是C/SDK的。我需要得到这样的表格:(相当于合并第一行第2列到最后一列的单元格。)
__________________________________________________________ 
|__标题_|_结论___________________________________________| 
|___1___|______|______|______|______|______|______|______| 
|___2___|______|______|______|______|______|______|______| 
|___3___|______|______|______|______|______|______|______| 
|___4___|______|______|______|______|______|______|______| 
|___5___|______|______|______|______|______|______|______| 
|___6___|______|______|______|______|______|______|______| 
|___7___|______|______|______|______|______|______|______| 
|___8___|______|______|______|______|______|______|______| 顺便问问,怎么动态的改变表格的列?
删除列的消息有没有?

解决方案 »

  1.   

    C/SDK...这个技术是不是太老了  
    现在应该很少有人涉及这个了吧   不太会
      

  2.   

    你响应NM_CUSTMEDRAW消息后 在里面自画, 判断是否是第一行就行了, 然后特殊处理, 其他默认处理删除可以用DeleteColumn();函数.
      

  3.   

    http://www.codeproject.com/KB/list/ListSubItSel.aspx
      

  4.   

    一个比较简单的方法是绘制CHeaderCtrl
    自己派生一个 CheaderCtrl 
    然后 subclass
    响应Cheaderctrl 的 WM_PAINT 消息,直接绘制
    这种方法要比自绘HeaderCtrl 要来的方便
      

  5.   

    比较麻烦,大致是下面这样子:case WM_DRAWITEM:
    {
    LPDRAWITEMSTRUCT lps = (LPDRAWITEMSTRUCT)lParam;
    RECT rc;
    if(lps->CtlType == ODT_LISTVIEW && lps->CtlID == IDC_listview)
    {
    //如果需要不同颜色,可以事先创建画笔和画刷然后选入设备
    SelectObject(lps->hDC,GetStockObject(BLACK_PEN));
    if(lps->itemAction == ODA_SELECT)
    {
    //选入高亮颜色画刷
    //...
    }
    else
    SelectObject(lps->hDC,GetStockObject(WHITE_BRUSH));

    SetBkMode(lps->hDC,TRANSPARENT);

    //画表格行的框
    RectAngle(lps->hDC,lps->rcItem.left,lps->rcItem.top,lps->rcItem.right,lps->rcItem.bottom);

    //画第一列右边的竖线
    ListView_GetItemRect(lps->hwndItem,lps->itemID,&rc,LVIR_BOUNDS);
       MoveToEx(lps->hDC,rc.right,rc.top);
       LineTo(lps->hDC,rc.right,rc.bottom);
       
       //ListView_GetItemText获取单元格文字然后DrawText或TextOut
       //...
       
       if(lps->itemID != 0)
       {
        //不是第一行,依次获取各单元格矩形画出单元格
        //...
       }
    }
    return TRUE;
    }只是一个大致示例,需要很多细节调整,自己补充完整吧。