如何在双击列表中插入编辑控件中的项目

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

本文关键字:编辑 控件 项目 插入 双击 列表      更新时间:2023-10-16

我需要在双链接列表中插入编辑控件中的一些数据。我该怎么做?编辑控件的数据类型是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源代码,看看它是如何实现的,只是为了教育目的。