控件第一列是主机IP地址,第二列是图象,根据对主机IP运行PING命令来显示不同的图象。现在被第二列怎么加入图象难住了!救命!

解决方案 »

  1.   

    这个你要把CLISTCTRL设置成重画,这个你可以得到每一个RECT,你就可以在这个RECT中画可以了。
      

  2.   

    我想显示256色的图象,必须用重绘,有谁会ower draw???解决再给他加100分,决不食言
      

  3.   

    我来帮你!
    给你举一个例子:
    imglist 是 对话框的成员变量, m_ListCtrl是 对话框的控件.
    imglist.Create(32,16,ILC_COLOR,8,4);
    imglist.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
         m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT |LVS_EX_SUBITEMIMAGES);
    m_ListCtrl.InsertColumn( 0 ,"Col1",LVCFMT_CENTER, 40 );
    m_ListCtrl.InsertColumn( 1 ,"Col2",LVCFMT_LEFT, 50);
         m_ListCtrl.SetItem( 1 , 1,LVIF_IMAGE,"",0,0,0,0);
    怎么样?应该解决了吧:)
      

  4.   

    呵呵,这个好处理阿,往Clistctrl各列插入图像相信楼主已经知道了吧
    要实现第一列没有图像,第二列没有图像,可以这样做
    在vc的资源编辑器中生成一个空白的,也就是底色为白色的icon资源
    然后把它加入到与listctrl相关联的图像列表中,不需要图像的列就插入这个空白图标,需要图像的列就插入对应的图标,这样应该就能实现楼主所需要的效果了吧!!
      

  5.   

    感谢大家的好意。不过你们还是没有解决我的问题:(
    用CImageList加入图标或图象显示的颜色只有16色,我想显示256色的一个.BMP图象
    无奈只好自己在每个subitem里画!
    必须重载CListCtrl::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct)
    设置了CListCtrl控件的LVS_OWNERDRAWFIXED属性,我已经能够进入这个虚函数了
    现在不知道如何获得最后一列的RECT,然后再在其上作图!
      

  6.   

    而且有一点很奇怪,我用CListCtrl生成的对象
    可以实现以下代码
    CString column_str[4] ={
    "IP",
    "仓库名称",
    "POS",
    "状态"
    };
    long column_width[4]={115,
    100,
    50,
    100
    };
    LV_COLUMN lvc;
    lvc.mask =  LVCF_FMT | LVCF_WIDTH |LVCF_TEXT ;
    m_ipList.SetExtendedStyle(LVS_EX_FULLROWSELECT);
    m_ipList.SetExtendedStyle(LVS_EX_SUBITEMIMAGES);
    for(i = 0; i<4; i++){
    lvc.iSubItem = i;
    lvc.pszText = column_str[i].GetBuffer(0);
    lvc.cx = column_width[i];
    lvc.fmt = LVCFMT_CENTER ;
    m_ipList.InsertColumn(i,&lvc);
    }  for(i = 0; i < nSections; i++){
    i = m_ipList.InsertItem(i,strIP);
    m_ipList.SetItemText(i,1,strCR);
    m_ipList.SetItemText(i,2,strPOS);
    m_ipList.SetItemData(i, i);
    }
    可是从CMyListCtrl(其中重载了DrawItem函数)
    这些代码就不起效果了
      

  7.   

    改变列显示的顺序
    BOOL SetColumnOrderArray( int iCount, LPINT piArray );
      

  8.   

    最后一列的RECT可以用GetColumnWidth来计算
      

  9.   

    CListCtrl::GetSubItemRect(...);//得到subitem的rect