{
// 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
小说推荐
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 其他
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 其他
- 最新章:第28章
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 其他
- 最新章:第27章
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 其他
- 最新章:第26章
- asp基础实用教程(DOC格式)
- 目 录一、关于ASP二、ASP的新功能三、创建ASP页四、使用脚本语言五、使用变量和常量六、使用集合七、ASP内建对象八、向浏览器发送内容九、包含文件十、访问数据库十一、调试ASP脚本十二、维护ASP应用程序的安全一、关于ASP Active Server Pages(ASP)是服务器端脚本编写环境
- 其他
- 最新章:第17章
- Linux实用培训教程(PDF)
- -Page 1-rrktqt的个人空间 Linux实用培训教程第一部分 作者:红联Linux实用培训教程第一部分-共三部分解的Linux知识,循序渐进的介绍Linux相关知识,从入门到提高,希望对所有学习Linux的朋友都有帮助 红联Linux论坛是致力于Linux技术讨论的站点,目前网站收录的文章
- 其他
- 最新章:第42章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 其他
- 最新章:第31章
- 路由器基本知识及应用实例(DOC格式)
- 第二章 路由器第一节 路由器发展概述自从1984年问世至今,路由器已经走过了近20年的快速技术发展历程。路由器的应用领域不断扩展、从单一的互通网关逐渐扩展到覆盖广域网、城域网乃至用户接入的各个领域。近年来,路由器早已逐渐脱离单纯用于企业网出口和互联的概念,开始成为运营网络和各种专用业务网络的核心设备
- 其他
- 最新章:第48章
- Java编程思想第4版[中文版](PDF格式)
- -Page 1-Page 2《Thinking In Java》中文版作者:Bruce Eckel主页:http/BruceEckel.编译:Trans Bot主页:http/memberease~transbot致谢-献给那些直到现在仍在孜孜不倦创造下一代计算机语言的人们!指导您利用万维网的语言进
- 其他
- 最新章:第295章