小弟想做个N(行)*N(列),请问怎么设置总行数?还有假如我插入6列,可是当父窗口变大之后,ListCtrl则会则会多出一个空白列,甚是苦恼,请高手帮忙?

解决方案 »

  1.   

    试过了,不管用啊
            
            m_Info(为一个listctrl)
            DWORD dwStyle;
    dwStyle = m_Info.GetStyle();
    dwStyle |=  LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT; m_Info.SetExtendedStyle(dwStyle);
    CRect rect;
    m_Info.GetWindowRect(&rect);
    int offset = rect.Width() / 6;
    m_Info.InsertColumn(1, (LPCTSTR)_T("File Name"), LVCFMT_CENTER, offset);
    m_Info.InsertColumn(2, (LPCTSTR)_T("Single Char"), LVCFMT_CENTER, offset);
    m_Info.InsertColumn(3, (LPCTSTR)_T("Whole String"), LVCFMT_CENTER, offset);
    m_Info.InsertColumn(4, (LPCTSTR)_T("Before"), LVCFMT_CENTER, offset);
    m_Info.InsertColumn(5, (LPCTSTR)_T("Or"), LVCFMT_CENTER, offset);
    m_Info.InsertColumn(6, (LPCTSTR)_T("Other"), LVCFMT_CENTER, rect.Width() - 5 * offset);

    m_Info.SetItemCountEx(1024, LVSICF_NOSCROLL|
    LVSICF_NOINVALIDATEALL);
      

  2.   

    控件宽度/n = 每列宽度。
    在onwindowsizechange时,忘了既不清楚了。就是窗口大小变化时重新设置每列宽度。
    具体函数看CListCtrl的memfunction。都有。创建listctrl时能指定行列数。