繁体   English   中英

如何从双链接列表中的编辑控件中插入项目

[英]How Do I Insert Items From An Edit Control In A Double Linked List

我需要在双链表中插入来自编辑控件的一些数据。 我该怎么做? 编辑控件的数据类型为CString并且所有名称都类似于m_... ,例如m_anrede等。

我的结构看起来像这样:

typedef struct adr{

    char anrede [5];
    char vorname [51];
    char nachname [51];
    char plz [8];
    char ort [60];
    char strasse [51];
    char land [24];
    char festnetz [14];
    char mobil [14];
    char mail [101];
    char geburtsdatum [11];
    char kategorie [31];
    char startnummer [5];
    char startzeit [9];
    char zeit [9];
    char rang [5];
    char fahrrad [31];
    char sponsor [31];
} adressen;


struct node{

    adressen *konto;
    struct node *prev;
    struct node *next;
};

我将更改您的数据结构以使其更像C ++:

#pragma once

class CAddress
{
public:
    CString anrede;
    CString vorname;
    CString nachname;
    CString plz;
    CString ort;
    CString strasse;
    CString land;
    CString festnetz;
    CString mobil;
    CString mail;
    CString geburtsdatum;
    CString kategorie;
    CString startnummer;
    CString startzeit;
    CString zeit;
    CString rang;
    CString fahrrad;
    CString sponsor;
};

我将使用MFC标准的CList<CAddress>甚至更好的C ++标准容器(集合类): std::list<CAddress>

因此,在应用程序窗口头文件中,您将列表定义为类成员,如下所示:

CList<CAddress> m_AddrList;

您将需要某种方法来获取用户输入并填写数据结构:

void CAddressEditorDlg::FillInAddr(CAddress& addr)
{
    m_anredeEditBox.GetWindowText(addr.anrede);
    m_vornameEditBox.GetWindowText(addr.vorname);
    m_nachnameEditBox.GetWindowText(addr.nachname);
    m_plzEditBox.GetWindowText(addr.plz);
    ...
}

之后,您只需将用户配置的地址添加到列表中:

void CAddressEditorDlg::OnAddAddrButton()
{
    CAddress currentAddr;
    FillInAddr(currentAddr);
    // add new addr to linked list
    m_AddrList.AddTail(currentAddr);
}

重要提示 :如果您是我,我将深入研究CList源代码,以了解如何仅出于教育目的而实现该代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM