ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:71.19KB ,
资源ID:17130782      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17130782.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第十章 MFC通用类文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第十章 MFC通用类文档格式.docx

1、获取数组中包含的元素个数GetUpperBound()获取数组的上界值。InsertAt()在数组的指定位置处插入一个元素,后面的元素的下标加1。RemoveAll()删除数组中所有的元素。SetAt()设定数组指定位置处的值。因为制革函数不会增加数组的大小,故这个下标此时一定要有效。SetAtGrow()设定数组的指定位置处的值,可以根据需要增大数组的大小。SetSize()设置数组的初始大小。下面将介绍一个数组的程序,这个程序可以让你测试一下MFC的数组类。首先,这个程序在View类中声明一个数组对象,如下:CUIntArray array;接着,在View类的构造函数中初始化数组,将其设

2、置成包含十个元素,array.SetSize(10, 5);SetSize()函数有两个参数,第一个参数是数组的初始大小,第二个参数是数组元素每次增加时增加的个数。在设置完数组的大小之后,程序等待用户在窗口中单击鼠标左键或右键。如果用户这样做了,程序将显示一个合适的对话框并且处理输入到对话框中的数据。下面的代码是该程序的OnLButtonDown()函数,用于处理用户单击右键的事件。void CArrayView:OnLButtonDown(UINT nFlags, CPoint point)CArrayAddDlg dialog(this);dialog.m_index = 0;dialog

3、.m_value = 0;dialog.m_radio = 0;int result = dialog.DoModal();if (result = IDOK)if (dialog.m_radio = 0)array.SetAtGrow(dialog.m_index, dialog.m_value);else if (dialog.m_radio = 1)array.InsertAt(dialog.m_index, dialog.m_value, 1);elsearray.Add(dialog.m_value);Invalidate();CView:OnLButtonDown(nFlags,

4、point);这段代码开始先创建一个对话框对象并初始化。如果用户选择对话框的“确定”按钮,OnLButton()函数将检查对话框的成员变量m_radio。值为0表示第一个单选按钮(设置)被选中,值为1表示第二个单选按钮(插入)被选中,值为2表示第三个单选按钮(添加)被选中。如果用户希望设置数组的元素,程序将调用SetAtGrow()函数,它需要两个参数,一个是数组元素的下标值,另一个是希望设置的值。它不象常规的SetAt()函数,用户必须使用当前有效的数组下标值。SetAtGrow()为了设置指定位置处的值将根据需要增大数组的大小。当用户选择了“插入”单选按钮,程序将调用InsertAt()函

5、数,它需要两个参数,一个是要插入的数组元素的下标,另一个是该数组元素的值。这将在指定位置处创建一个新的数组元素,并将把后面的元素往后推。最后当用户选择了“添加”按钮,程序将调用Add()函数,这将在数组的后面添加一个元素。对Invalidate()的调用将使程序重新显示数据。下面的OnDraw()函数读取并显示数组。OnDraw(CDC* pDC)CArrayDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ Get the current fonts height.TEXTMETRIC textMetric;pDC-GetTextMetrics(&t

6、extMetric);int fontHeight = textMetric.tmHeight;/ Get the size of the array.int count = array.GetSize();int displayPos = 10;/ Display the array data.for (int x=0; xSetCheck(1);return TRUE; / return TRUE unless you set the focus to a control/ EXCEPTION: OCX Property Pages should return FALSE5. 添加三个函数

7、用以响应用户单击单选按钮。void CArrayAddDlg:OnAdd0() Add your control notification handler code hereGetDlgItem(IDC_INDEX)-EnableWindow(true);OnAdd1()OnAdd2()EnableWindow(false);为了确定用户选择了哪一个单选按钮,重载CDialog:OnOK()。OnOK() Add extra validation hereUINT nRadio=GetCheckedRadioButton(IDC_ADD0,IDC_ADD2);switch(nRadio)cas

8、e IDC_ADD0:m_radio=0;break;case IDC_ADD1:m_radio=1;case IDC_ADD2:m_radio=2;default:OnOK();按照下面的步骤创建另一个对话框类CRemoveDlg。1. 创建如图10.2所示的对话框,两个单选按钮的ID分别是IDC_REMOVE0和IDC_REMOVE1。 图10. 2 删除数组元素对话框2. 在ClassWizard中为文本框映射一个UINT类型的变量m_index。BOOL CArrayRemoveDlg:(CButton*)GetDlgItem(IDC_REMOVE1)-5添加两个函数用以响应用户单击单

9、选按钮。void CArrayRemoveDlg:OnRemove0()OnRemove1()6. 为了确定用户选择了哪一个单选按钮,重载CDialog:UINT nRadio=GetCheckedRadioButton(IDC_REMOVE0,IDC_REMOVE1);case IDC_REMOVE0:case IDC_REMOVE1:现在编译并运行这个程序,首先在窗口中显示一个有十个元素的数组,如图10.3所示。单击左键弹出如图10.1所示的对话框,你可以选择三种数组操作:设置、插入和添加。单击右键弹出如图10.2所示的对话框,你可以选择两种删除操作:删除全部元素和删除指定元素。Eleme

10、nt 0 contains the value 0.Element 1 contains the value 0.Element 2 contains the value 0.Element 3 contains the value 0.Element 4 contains the value 0.Element 5 contains the value 0.Element 6 contains the value 0.Element 7 contains the value 0.Element 8 contains the value 0.Flemenf 9 cnnfains the Val

11、ne 0.图10. 3 程序运行初始窗口第二节 列表类列表类象是有特殊功能的数组。列表的元素被称为节点。列表使用指针来连结它的节点。如果你希望快速的插入和删除数组元素,列表类是一个比较好的选择。但是在列表中查找一个元素要比在数组中慢,因为列表需要按照指针顺序从一个节点到另外一个节点。通常我们称列表中第一个节点为列表的头,列表中最后一个节点是列表的尾。列表类有以下成员函数:Clist()Clist类的构造函数,其中的参数指定分配内存的基本单元。GetHead( )获得列表的第一个元素的值。GetTail( )获得列表的最后一个元素的值。RemoveHead( )删除列表中第一个元素RemoveT

12、ail( )删除列表中最后一个元素。AddHead()在列表的头部添加一个节点,使这个节点成为列表的新的头。AddTail()在列表的尾部添加一个节点,使这个节点成为列表的新的尾。删除节点中所有的元素。GetHeadPosition( )获得列表的头节点的位置。GetTailPosition( )获得列表中尾节点的位置。GetNext()获得指定位置下一个节点处的值。GetPrev()获得指定位置上一个节点处的值。获得指定位置处节点的值。设置指定位置处节点的值。RemoveAt()删除指定位置处的节点。InsertBefore()在指定位置的前面插入一个节点。InsertAfter()在指定位

13、置的后面插入一个节点。Find()按照列表顺序搜索给定的对象指针,返回一个POSITION类型的量。FindIndex()按照列表顺序搜索指定的下标。GetCount()获得列表中包含的节点个数。IsEmpty()检查一个列表是否不含有任何节点。下面的程序将允许用户添加和删除节点,按照以下步骤进行:1. 使用MFC AppWizard创建一个单文档应用程序List。2. 添加一个对话框类CAddStudentDlg,其对应的对话框如图10.4所示。 图10. 4 添加节点对话框3. 为两个文本框映射两个变量m_name,m_score。4. 添加一个对话框类CRemoveStudentDlg,

14、其对应的对话框如图10.5所示。两个单选按钮的ID为IDC_REMOVE0和IDC_REMOVE1。 图10. 5 删除节点对话框5. 为对话框类添加一个UINT类型的成员变量m_radio。6. 在OnInitDialog()函数中设置单选按钮的初始状态。BOOL CRemoveStudentDlg:(CButton*)GetDlgItem(IDC_REMOVE0)-7. 为了知道用户选择了哪一个单选按钮,在OnOk()函数中添加下面的代码。void CRemoveStudentDlg:8. 在ListView.h中CListView类的声明之前添加如下代码,用来定义一个结构体CStuden

15、t,包含两个变量m_name和m_score,分别用于存放学生的姓名和成绩。struct CStudentCString m_name;int m_score;9. 为ClistView添加一个类型为CptrList的成员变量m_list。10. 在ListView.cpp中添加下列语句:#include AddStudentDlg.hRemoveStudentDlg.h11. 当用户单击左键后,弹出如图10.4所示的对话框,可以添加一个节点。对应的OnLButtonDown()函数代码如下:void CMyListView:CAddStudentDlg dialog;dialog.m_nam

16、e = ;dialog.m_score = 0 ;/ Display the dialog box./ Create and initialize the new node.CStudent* m_pStudent = new CStudent;m_pStudent-m_name = dialog.m_name;m_score = dialog.m_score;/ Add the node to the list.m_list.AddTail(m_pStudent);/ Repaint the window.12. 当用户单击右键后,弹出如图10.5所示的对话框,可以删除一个节点。对应的OnR

17、ButtonDown()函数代码如下:CRemoveStudentDlg dialog;/ If the user clicked the OK button.CStudent* m_pStudent=new CStudent;/ Make sure the list isnt empty.if (m_list.IsEmpty()MessageBox(节点已经全部删除!);/ Remove the specified node.m_pStudent = (CStudent*)m_list.RemoveHead();m_pStudent = (CStudent*)m_list.RemoveTail();/ Delete the node object and repaint the window.delete m_pStudent;13. 最后设置OnDraw()函数用来响应Invalidate()。CListDoc* pDoc = GetDocument();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1