本程序是一個機遇對話框的工程,在OnInitDialog()使用了初始化,包括表頭的一些安排和style的設置
使用listcontrol控件遇到的問題:
1、程序運行以後,沒有出現表頭;
2、在對話框初始化結束以後,如果向控件中添加數據,就會出現表頭;
3、如果手工調節表頭裏的分隔綫,下面的數據欄分隔綫不會自動更新;如果把這些功能抽出來單獨在一個工程中使用,就不會有任何問題,但是我實在不知道listcontrol控件和那些東西有了衝突啊!謝謝前輩耐心分析一下!

解决方案 »

  1.   

    是否选择了report风格你不贴代码我等怎么知道什么地方有问题
      

  2.   

    BOOL CListCtrlDemoDlg::OnInitDialog()
    {
    CDialog::OnInitDialog();
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
    CString strAboutMenu;
    strAboutMenu.LoadString(IDS_ABOUTBOX);
    if (!strAboutMenu.IsEmpty())
    {
    pSysMenu->AppendMenu(MF_SEPARATOR);
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
    }

    SetIcon(m_hIcon, TRUE); // Set big icon
    SetIcon(m_hIcon, FALSE); // Set small icon
    //建立图像列表
    LargeImage.Create(32,32, ILC_COLOR8 |ILC_MASK , 8, 1);
    SmallImage.Create(16, 16, ILC_COLOR8 | ILC_MASK, 8, 1);
    //为图像列表装入位图
    CBitmap cBmp;
    cBmp.LoadBitmap(IDB_IMAGES_NORMAL);

    LargeImage.Add(&cBmp, RGB(255,0, 255));
    cBmp.DeleteObject();

    cBmp.LoadBitmap(IDB_IMAGES_SMALL);
    SmallImage.Add(&cBmp, RGB(255,0, 255));
    cBmp.DeleteObject();
    //为列表控件关联图像列表
    m_list.SetImageList(&LargeImage, LVSIL_NORMAL);
    m_list.SetImageList(&SmallImage, LVSIL_SMALL);
    //添加三个列
    LVCOLUMN lvcol;
    lvcol.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;

    lvcol.fmt=LVCFMT_CENTER;//居中
    lvcol.pszText="第一列";
    lvcol.iSubItem=1;
    lvcol.cx=70;

    m_list.InsertColumn(0,&lvcol);
    lvcol.pszText="第二列";
    m_list.InsertColumn(1,&lvcol);
    lvcol.pszText="第三列";
    m_list.InsertColumn(2,&lvcol);

    LVITEM lvi;
    CString strItem;
    for (int i = 0; i < 8; i++)
    {
    //设置第一列
    lvi.mask =  LVIF_IMAGE | LVIF_TEXT;
    strItem.Format(_T("图标%i"), i);
    lvi.iItem = i;
    lvi.iSubItem = 0;
    lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
    lvi.iImage = i;
    m_list.InsertItem(&lvi);

    //设置第二列(子列):
    strItem.Format(_T("第%d行"), i);
    lvi.iSubItem =1;
    lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
    m_list.SetItem(&lvi);

    //设置第三列(子列)
    strItem.Format(_T("第%d行"), i);
    lvi.iSubItem =2;
    lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
    m_list.SetItem(&lvi);

    }
    return TRUE;  
    }沒有選擇report风格
    我覺得代碼應該沒有任何問題,我把上面的代碼完全不變的copy到我的程序中的!
      

  3.   

    不选Report风格能出现表头吗,疑惑?