BOOL CStrTable::OnInitDialog()
{
CDialog::OnInitDialog();

m_ListCtrl =(CListCtrl*)GetDlgItem(IDC_LIST);
m_ListCtrl->SetExtendedStyle(m_ListCtrl->GetExtendedStyle()
|LVS_EX_GRIDLINES|LBS_NOTIFY|LVS_EX_FULLROWSELECT |        LVS_EX_TRACKSELECT|LVS_EX_ONECLICKACTIVATE); m_ListCtrl->InsertColumn(0, _T("序号"), LVCFMT_LEFT, 40);
m_ListCtrl->InsertColumn(1, _T("ID"),LVCFMT_LEFT, 40);
    m_ListCtrl->InsertColumn(2, _T("内容"), LVCFMT_LEFT, 400);

CString strText;
int nColumnCount = m_ListCtrl->GetHeaderCtrl()->GetItemCount();

// Insert 10 items in the list view control.
for (int i=0;i < 10;i++)
{
strText.Format(TEXT("item %d"), i);

// Insert the item, select every other item.
m_ListCtrl->InsertItem(
LVIF_TEXT|LVIF_STATE, i, strText,
(i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED,
0, 0);

// Initialize the text of the subitems.
for (int j=1;j < nColumnCount;j++)
{
strText.Format(TEXT("sub-item %d %d"), i, j);
m_ListCtrl->SetItemText(i, j, strText);
}
} UpdateData(FALSE);

return TRUE;
}

解决方案 »

  1.   

    有没有设置listctrl的属性为report?
      

  2.   

    m_ListCtrl-> InsertItem(LVIF_TEXT ¦LVIF_STATE, i, strText, (i%2)==0 ? LVIS_SELECTED : 0,LVIS_SELECTED,0, 0); 
    这个函数怎么这么复杂?
    int InsertItem(
       const LVITEM* pItem 
    );
    int InsertItem(
       int nItem,
       LPCTSTR lpszItem 
    );
    int InsertItem(
       int nItem,
       LPCTSTR lpszItem,
       int nImage 
    );
      

  3.   

    listctrl的属性是report  
    InsertItem语句当初我自己写的不行  
    后来是直接从MSDN上COPY过来的 也没有效果
      

  4.   

    这个是RC资源里面的定义
        CONTROL         "List1",IDC_LIST,"SysListView32",LVS_REPORT | 
                        LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_OWNERDRAWFIXED | 
                        LVS_ALIGNLEFT | WS_BORDER | WS_GROUP | WS_TABSTOP,7,7,
                        299,244
      

  5.   

    CDialog::OnInitDialog(); // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE); // Set big icon
    SetIcon(m_hIcon, FALSE); // Set small icon

    CListCtrl *m_ListCtrl;
    // TODO: Add extra initialization here
    m_ListCtrl =(CListCtrl*)GetDlgItem(IDC_LIST1); 
    m_ListCtrl-> SetExtendedStyle(m_ListCtrl-> GetExtendedStyle() 
    |LVS_EX_GRIDLINES |LBS_NOTIFY |LVS_EX_FULLROWSELECT  |        LVS_EX_TRACKSELECT |LVS_EX_ONECLICKACTIVATE);  m_ListCtrl-> InsertColumn(0, _T("序号"), LVCFMT_LEFT, 40); 
    m_ListCtrl-> InsertColumn(1, _T("ID"),LVCFMT_LEFT, 40); 
    m_ListCtrl-> InsertColumn(2, _T("内容"), LVCFMT_LEFT, 400);  CString strText; 
    int nColumnCount = m_ListCtrl-> GetHeaderCtrl()-> GetItemCount();  // Insert 10 items in the list view control. 
    for (int i=0;i  < 10;i++) 

    strText.Format(TEXT("item %d"), i);  // Insert the item, select every other item. 
    m_ListCtrl-> InsertItem( 
    LVIF_TEXT |LVIF_STATE, i, strText, 
    (i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED, 
    0, 0);  // Initialize the text of the subitems. 
    for (int j=1;j  < nColumnCount;j++) 

    strText.Format(TEXT("sub-item %d %d"), i, j); 
    m_ListCtrl-> SetItemText(i, j, strText); 

    }  //UpdateData(FALSE);  return TRUE;  // return TRUE  unless you set the focus to a control你可能变量定义重复了。
    上面俺未定义任何关联变量。
      

  6.   

    m_list.InsertItem(0,"");
    m_list.SetItemText(0,0,"");
    m_list.SetItemText(0,1,"");
    ...
    m_list.SetItemText(0,"列号","你的内容");m_list.InsertItem(1,"");
    m_list.SetItemText(1,0,"");
    m_list.SetItemText(1,1,"");
    ...
    m_list.SetItemText(1,"列号","你的内容");依此类推
      

  7.   

    To jennyvenus :
     俺也未定义任何关联变量
      

  8.   

    LVS_OWNERDRAWFIXED  
    把这个属性去掉试试
      

  9.   

    1)建议先把所有的style 去掉,只保留一个,看看效果..如果不行.换另一个试试
    2)在for (int j=1;j  < nColumnCount;j++) 
        { 
           strText.Format(TEXT("sub-item %d %d"), i, j); 
           m_ListCtrl->SetItemText(i, j, strText); 
        } 设置断点.看看是否有值赋值成功
    感觉是你在设置行的时候有问题,所以显示不出来.
    以下是我添加CListCtrl项的代码
    m_ListCtrl.InsertColumn(0,"成员ID",0,181,1);
    m_ListCtrl.InsertColumn(1,"职务",0,82,1);CString str[18] = {"111","1","222","2","333","3","444","4","555","5","666","6","777","7","888","8","999","9"};
    for (int i = 0;i< 5 ;i++)
    {
        int j = 0;
        j = m_ListCtrl.InsertItem(i,"");   //感觉这里是最重要的...希望你可以关注一下.
        m_ListCtrl.SetItemText(j,0,str[i]);
        m_ListCtrl.SetItemText(j,1,str[++i]);
    }
     
      

  10.   

    没错!去掉LVS_OWNERDRAWFIXED 
      

  11.   

    我在我的机子上边可是完全通过了,lz你的变量m_ListCtrl得是自己定义的
    如:CListCtrl  *m_ListCtrl;不能是通过calss wizard  添加的成员变量
    另外你的listctrl风格得是report
      
      

  12.   

    CCtrlList m_mylist;
    m_mylist =(CListCtrl*)GetDlgItem(IDC_LIST1);
    DWORD dwExStyle = m_mylist.GetExStyle();
    dwExStyle&=~LVS_EX_CHECKBOXES;
    m_mylist.SetExtendedStyle(dwExStyle|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE); int i=0;
    for(i=5;i>=0;i--)
    {
    str.Format ("第%d栏",i);
    m_mylist.InsertColumn (NULL,str,LVIF_TEXT,100,0);
    }
    for(i=20;i>=0;i--)
    {
    str.Format ("第%d项",i);
    int n=m_mylist.InsertItem (0,str);
    for(int j=5;j>=1;j--)
    {
    str.Format ("第%d子项",j);
    m_mylist.SetItem (n,j,LVIF_TEXT,str,NULL,0,0,0);
    }
    }
    用这个吧,不想看你代码了
      

  13.   

    呵呵,没主意,m_mylist =(CListCtrl*)GetDlgItem(IDC_LIST1);这句从上面拷的,后面的引用也换成指针就行了