我要求链表中的一个结点是:struct CMaskStruct
{
   int nID;
   CString  strMaskName;
   CString  strMaskValue;
   CString  strPlaceholder;
   CString  strExampleData;
   CString  strMaskType;
}不知MFC里的CList可否实现。
请举个例子,谢了。

解决方案 »

  1.   

    楼主你可以用CMap来做,定义你的结构体:
    typedef struct CMaskStruct
    {
       int nID;
       CString  strMaskName;
       CString  strMaskValue;
       CString  strPlaceholder;
       CString  strExampleData;
       CString  strMaskType;
    }CMASKSTRUCT;
    CMap <int,int ,CMASKSTRUCT,CMASKSTRUCT> m_arrMaskStruct;
    用的时候int就是你在链表中的index,
    m_arrMaskStruct[index].nID,m_arrMaskStruct[index].strMaskName;
      

  2.   

    typedef CList<CMASKSTRUCT, CMASKSTRUCT&> CMASKSTRUCTList;
      

  3.   

    谢了,楼上。请教一下:
    ///////////////////////////////////////////////////////
    CMaskStruct m_maskStruct;
    m_maskStruct.nID = 0;
    m_maskStruct.strMaskName = _T("十进制数");
    m_maskStruct.strMaskValue = _T("00000000");
    m_maskStruct.strPlaceholder = _T("_");
    m_maskStruct.strExampleData = _T("12345678");
    m_maskStruct.strMaskType = _T("未定,要修改");因为我要把链表保存在内存中,以便把进行操作。
    具体怎么样操作?增加结点,删除结点,释放这个链表的内存?
    我是第一次用,请详细说说,重谢了。
      

  4.   

    #include "afxtempl.h"
    CTypedPtrList<CPtrList, CMarkStruct*> listMark;listMark即上鏈表的名稱
      

  5.   

    //.h文件里:
    CMaskStruct m_maskStruct; //对应于掩码链表中的一个节点 CMASKSTRUCTList m_maskList; //保存掩码的链表。//.CPP文件里:
    m_maskStruct.nID = 0;
    m_maskStruct.strMaskName = _T("十进制数");
    m_maskStruct.strMaskValue = _T("00000000");
    m_maskStruct.strPlaceholder = _T("_");
    m_maskStruct.strExampleData = _T("12345678");
    m_maskStruct.strMaskType = _T("未定,要修改");//在m_maskList增加第一个结点。
        m_maskList.AddHead( m_maskStruct );  //OK
    //怎么把这个结点的值取出来???
    int nTemp = m_maskList[0].nID;  //Errot//要怎么样做才对???
      

  6.   

    如果你用的是cmap的话,不用你操心内存的释放,增加用add,删除用remove,具体你看看msdn就行了,记得最后不用的时候removeall
      

  7.   

    CMaskStruct maskStructTemp; maskStructTemp = m_maskList.GetAt( m_maskList.FindIndex(0) );         int nTemp = maskStructTemp.nID;  //这样做就OK了。
             //我试了好久,看MSDN,才搞定。