《C语言实例教程(PDF格式)》第126章



// TODO: Add your control notification handler code here
GetDlgItem(IDC_INDEX)…》EnableWindow(false);

为了确定用户选择了哪一个单选按钮,重载CDialog::OnOK()。
void CArrayAddDlg::OnOK()

…………………………………………………………Page 600……………………………………………………………
// TODO: Add extra validation here
UINT nRadio=GetCheckedRadioButton(IDC_ADD0;IDC_ADD2);
switch(nRadio)

case IDC_ADD0:
m_radio=0;
break;
case IDC_ADD1:
m_radio=1;
break;
case IDC_ADD2:
m_radio=2;
break;
default:
break;

CDialog::OnOK();

按照下面的步骤创建另一个对话框类CRemoveDlg。
1。 创建如图10。2所示的对话框,两个单选按钮的ID分别是 
IDC_REMOVE0和IDC_REMOVE1。
图10。 2 删除数组元素对话框
…………………………………………………………Page 601……………………………………………………………
2。 在ClassWizard中为文本框映射一个UINT类型的变量m_index。
3。 给该对话框添加一个UINT类型的成员变量m_radio。
4。 为WM_INITDIALOG添加函数OnInitDialog(),在其中设置单选按钮 
的初始状态。
BOOL CArrayRemoveDlg::OnInitDialog()

CDialog::OnInitDialog();
// TODO: Add extra initialization here
((CButton*)GetDlgItem(IDC_REMOVE1))…》SetCheck(1);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE

5.添加两个函数用以响应用户单击单选按钮。
void CArrayRemoveDlg::OnRemove0()

// TODO: Add your control notification handler code here
GetDlgItem(IDC_INDEX)…》EnableWindow(false);

void CArrayRemoveDlg::OnRemove1()

// TODO: Add your control notification handler code here
GetDlgItem(IDC_INDEX)…》EnableWindow(true);

6。 为了确定用户选择了哪一个单选按钮,重载CDialog::OnOK()。
void CArrayRemoveDlg::OnOK()

…………………………………………………………Page 602……………………………………………………………
// TODO: Add extra validation here
UINT nRadio=GetCheckedRadioButton(IDC_REMOVE0;IDC_REMOVE1);
switch(nRadio)

case IDC_REMOVE0:
m_radio=0;
break;
case IDC_REMOVE1:
m_radio=1;
break;
default:
break;

CDialog::OnOK();

现在编译并运行这个程序,首先在窗口中显示一个有十个元素的数 
组,如图10。3所示。单击左键弹出如图10。1所示的对话框,你可以选 
择三种数组操作:设置、插入和添加。单击右键弹出如图10。2所示的 
对话框,你可以选择两种删除操作:删除全部元素和删除指定元素。
图10。 3 程序运行初始窗口
…………………………………………………………Page 603……………………………………………………………
第二节 列表类
列表类象是有特殊功能的数组。列表的元素被称为节点。列表使用指 
针来连结它的节点。如果你希望快速的插入和删除数组元素,列表类 
是一个比较好的选择。但是在列表中查找一个元素要比在数组中慢, 
因为列表需要按照指针顺序从一个节点到另外一个节点。
通常我们称列表中第一个节点为列表的头,列表中最后一个节点是列 
表的尾。
列表类有以下成员函数:
Clist
Clist类的构造函数,其中的参数指定分配内存的基本单元。
GetHead( )
获得列表的第一个元素的值。
GetTail( )
获得列表的最后一个元素的值。
RemoveHead( )
删除列表中第一个元素
RemoveTail( )
删除列表中最后一个元素。
AddHead
在列表的头部添加一个节点,使这个节点成为列表的新的头。
AddTail
在列表的尾部添加一个节点,使这个节点成为列表的新的尾。
RemoveAll()
删除节点中所有的元素。
…………………………………………………………Page 604……………………………………………………………
GetHeadPosition( )
获得列表的头节点的位置。
GetTailPosition( )
获得列表中尾节点的位置。
GetNext()
获得指定位置下一个节点处的值。
GetPrev()
获得指定位置上一个节点处的值。
GetAt()
获得指定位置处节点的值。
SetAt()
设置指定位置处节点的值。
RemoveAt()
删除指定位置处的节点。
InsertBefore()
在指定位置的前面插入一个节点。
InsertAfter()
在指定位置的后面插入一个节点。
Find()
按照列表顺序搜索给定的对象指针,返回一个POSITION类型的量。
FindIndex()
按照列表顺序搜索指定的下标。
GetCount()
…………………………………………………………Page 605……………………………………………………………
获得列表中包含的节点个数。
IsEmpty()
检查一个列表是否不含有任何节点。
下面的程序将允许用户添加和删除节点,按照以下步骤进行:
1。 使用MFC AppWizard创建一个单文档应用程序List。
2。 添加一个对话框类CAddStudentDlg,其对应的对话框如图10。4所 
示。
图10。 4 添加节点对话框
3。 为两个文本框映射两个变量m_name,m_score。
4。 添加一个对话框类CRemoveStudentDlg,其对应的对话框如图10。5 
所示。两个单选按钮的ID为IDC_REMOVE0和IDC_REMOVE1。
图10。 5 删除节点对话框
5。 为对话框类添加一个UINT类型的成员变量m_radio。
6。 在OnInitDialog()函数中设置单选按钮的初始状态。
BOOL CRemoveStudentDlg::OnInitDialog()

CDialog::OnInitDialog();
…………………………………………………………Page 606……………………………………………………………
// TODO: Add extra initialization here
((CButton*)GetDlgItem(IDC_REMOVE0))…》SetCheck(1);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE

7。 为了知道用户选择了哪一个单选按钮,在OnOk()函数中添加下面 
的代码。
void CRemoveStudentDlg::OnOK()

// TODO: Add extra validation here
UINT nRadio=GetCheckedRadioButton(IDC_REMOVE0;IDC_REMOVE1);
swit
小说推荐
返回首页返回目录