例如子项(0, 1)的状态图标位于子项(0, 0)边界矩形的右边,而第一项(0, 0)的状态图标却位于自身边界矩形的左边,这样很难看,请问有解决办法没?

解决方案 »

  1.   

    你可以设置它居中显示啊
    LVCFMT_CENTER
      

  2.   

    第一列默认只能左对齐,不过你可以自绘CListCtrl
      

  3.   

    The leftmost column in a list view control must be left-aligned.
      

  4.   


    BOOL CfasfasfsadfsDlg::OnInitDialog()
    {
        // ...
        
        // TODO: Add extra initialization here
        m_pListCtrl = (CListCtrl*)GetDlgItem(IDC_LISTCTRL_TEST);
        ASSERT(NULL != m_pListCtrl);    // 设置样式
        m_pListCtrl->ModifyStyle(0, LVS_REPORT);
        m_pListCtrl->SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_SUBITEMIMAGES | LVS_EX_FULLROWSELECT |   m_pListCtrl->GetExtendedStyle());    // 嵌入图片集
        m_pImageList = new CImageList();
        ASSERT(NULL != m_pImageList);
        m_pImageList->Create(IDB_BITMAP1, 13, 1, COLORREF(-1));
        m_pListCtrl->SetImageList(m_pImageList, LVSIL_STATE);    // 插入列
        m_pListCtrl->InsertColumn(0, L"序号", LVCFMT_CENTER, 100);
        m_pListCtrl->InsertColumn(1, L"姓名", LVCFMT_CENTER, 100);
        m_pListCtrl->InsertColumn(2, L"学院", LVCFMT_CENTER, 100);    // 插入数据
        m_pListCtrl->DeleteAllItems();
        m_pListCtrl->InsertItem(0, L"0001");
        m_pListCtrl->SetCheck(0);    m_pListCtrl->SetItemText(0, 1, L"liujichao");    LVITEM item;
        item.mask = LVIF_STATE;
        item.iItem = 0;
        item.iSubItem = 1;
        item.state = INDEXTOSTATEIMAGEMASK(2);
        item.stateMask = LVIS_STATEIMAGEMASK;
        m_pListCtrl->SetItem(&item);    return TRUE;
    }
    1楼给的方法不行,我是想通过给子项设置状态图片来支持列表控件子项具有选中状态,希望不要自绘那么麻烦。大家可以将我给的代码进行测试。