我在写一个自动充填ListCtrl的类,其中使用到
一个别人写的Listctrl的排序类,http://www.vckbase.com/document/viewdoc/?id=891
他在增加每行记录是在这样调用的
m_MyListCtrl.AddItem(_T("1"),_T("栾义明"),_T("1979-07-25"));
他这样写得比较死,因为我这个类要对不同的数据库进行显示,
当字段数个不定时,该怎么灵活调用??
我想用一个大字符串加上多个字段再用AddItem调用,但是不行。
各位有什么好办法??

解决方案 »

  1.   

    修改这个派生类,对AddItem进行重载,重新封装clistctrl的方法
      

  2.   

    对了,他的函数是这样定义的
    int CSortListCtrl::AddItem( LPCTSTR pszText, ... )
      

  3.   

    int CSortListCtrl::AddItem( LPCTSTR pszText, ... )这种定义就是考虑到了任意个参数得情况,多少个字段都没问题。
      

  4.   

    可以修改成 AddItem(CString str);
    其中 str 中的字符串以某个分隔符来分隔
    例如:
    m_MyListCtrl.AddItem(_T("1|栾义明|1979-07-25"));
    转换成对字符串的处理
      

  5.   

    >>可是我该如何在循环中动态加入参数?看看MSDN中关于动态参数的部分:va_list VAList;
    va_start(VAList, );
    va_end(VAList);
      

  6.   

    我明白动态参数的概念了,但现在的关键是,我想把这个类写得灵活些,我不想修改AddItem的接口的提前下,如何在程序中动态地在AddItem后面加上参数,这个想法能实现吗?
      

  7.   

    我看了MSDN关于动态参数的部分,它的参数在每次调用时都是固定的。能否在调用时再动态加入参数?
      

  8.   

    简单的分支处理吧
    switch (ParamCount)
    {
    case 1:
      AddItem ( Fields[0]);
      break;
    case 2:
      AddItem(Fields[0], Fields[1]);
      break;
    ...
    }