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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(第5讲-列表控件.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

第5讲-列表控件.doc

1、第五讲 列表控件 本讲主要介绍组合框(Combo Box)控件和列表框(List Box)控件的的使 用方法. 一.创建一个基于对话框的应用程序模板 1.选择应用程序类型: 选择“File\New”菜单 → 在弹出的“New”对话框的选择“Projects” 选项卡 → 应用程序类型选择“MFC AppWizard(exe)" → “Project name”编辑框中输入“ListBox” → “Location"编辑框中输入适当的 路径 → 单击“OK” 2.选择项目类型

2、 在“MFC AppWizar – Step 1”对话框中“Dialog based”单选钮 → 单击“Finish”按钮。 二.修改对话框模板 把主对话框模板修改成如下图所示: 图6-1 1.增加“编号”、“姓名”、“出生年月”、“性别"、“职称”和“职工情况列表” 等六个静态文本 2.在“编号"右侧增加一个下沉风格的静态文本,资源符号为:IDC_NUMBER 在“Styles”选项卡的“Center-vertically"复选钮:

3、 选中 3.在“姓名"和“出生年月”右侧,增加二个编辑框,资源符号分别为: IDC_NAME, IDC_BIRTHDAY 4.在“性别”和“职称”右侧,增加二个组合框,资源符号分别命名为: IDC_SEX 在Combo Box Properties对话框的styles选项卡的 type下拉列表框中选择Drop List 注: Drop List选项不允许组合框编辑输入 IDC_TITLE 在Combo Box Prop

4、erties对话框的styles选项卡的 type下拉列表框中选择Drop List 注: Dropdown选项允许组合框编辑输入 5.增加“添加"、“删除当前选定行”和“在选定行前插入”三个按钮,ID值命 名为: IDC_ADD, IDC_DELETE, IDC_INSERT 6.在“职工情况列表”的下方,增加一个列表控件”List Control": 在”List Control Properties”对话框中如下设置: A.在General选项卡的I

5、D组合框中输入: IDC_LIST B.在Styles选项卡中选择: “View:”下拉列表框: Report “Align:”下拉列表框: Top “Sort:”下拉列表框: Ascending “Single selection”复选框: 选中 三.为控件连接变量 为各控件连接的变量名及其值类型和变量类型如下(连接方法前已述): 控件ID 变量名 变量类别 变量类型

6、 IDC_NUMBER m_nNumber value CString IDC_NAME m_sName value CString IDC_BIRTHDAY m_sBirthday value CString IDC_SEX m_nSex valve int m_cSex

7、 Control CComboBox IDC_TITLE m_sTitle value CString m_cTitle Control CComboBox IDC_LIST m_cList Control CListBox 注:IDC_TITLE组合框控件上各连连接了两个变量,它们值类型分别为value 和Control,连接方法是对同一个控

8、件ID,两次使用“Add Variables…” 即可. 四.组合框控件的初始化 1.在CListBoxDlg类中添加二个成员变量: 变量类型 变量名 作用域 CString strTitle public CString m_sSex public 2.在CListBoxDlg类的构造函数中对变量strTitle初始化:

9、 strTitle=”助教/讲师/副教授/教授/”; 3.在CListBoxDlg类中添加一个函数: 函数类型:void 函数名:InitCombo() 作用域:Protected 4.编写函数InitCombo()成: void CListBoxDlg::InitCombo() { int i,n; CString s1[2] = {”男",”女"}; for(i=0;i<2;i++) m_cSex.AddString(

10、s1[i]); CString s,s2=strTitle; while(s2 != ””) { n=s2.Find(’/',0); s=s2.Left(n); m_cTitle。AddString(s); s2。Delete(0,n+1); } } 3.在CListBoxDlg类的OnInitDialog()函数中添加一条

11、语句: // TODO: Add extra initialization here InitCombo(); 4.编译并运行程序,观察程序的运行情况 五.组合框内容的获取 经过下拉列表的选择或编辑输入后,组合框中具有了内容,要获取这些 内容可如下操作: 1.为组合框控件IDC_SEX增加一个CBN_SELCHANGE消息响应函数 OnSelchangeSex()如下: 1)选择“View\ClassWizard…”菜单项 2)在弹出的MFC Cl

12、asswizard对话框中如下操作: A.选择Message Maps选项卡 B.在Class name下拉列表框中选择CListBoxDlg类 C.在Object IDs列表框中选择:IDC_SEX D.在Messages列表框中选择CBN_SELCHANGE E.单击Add Function按钮,在弹出的Add member function对话框中 单击OK按钮 F.再单击MFC Classwizard对话框的“Edit code”按钮,进入函数编

13、 辑 3)编写OnSelchangeSex()如下: void CListBoxDlg::OnSelchangeSex() { // TODO: Add your control notification handler code here UpdateData(); int n=m_cSex。GetCurSel(); if(n!=CB_ERR) m_cSex。GetLBText(n,m_sSex);

14、 } 2.为组合框控件IDC_TITLE增加一个CBN_SELCHANGE消息响应函数 OnSelchangeTitle(),方法同上,函数程序如下: void CListBoxDlg::OnSelchangeTitle() { // TODO: Add your control notification handler code here UpdateData(); int n=m_cTitle。GetCurSel();

15、 if(n!=CB_ERR) m_cTitle.GetLBText(n,m_sTitle); } 3.为按钮控件IDC_ADD添加一个BN_CLICKED消息响应函数OnAdd()如下: void CListBoxDlg::OnAdd() { // TODO: Add your control notification handler code here CString str="性别:"+m_sSex+"\n\n职称:"+m_sTitle; MessageBox(

16、str); } 4.编译并运动程序,观察程序的运行情况。 由程序的运行情况可见:通过下拉列表选择的内容能正确地获取,但在 IDC_TITLE控件中通过编辑输入的数据无法正确地获取.为解决这一问 题并使编辑输入的内容能增添到下拉列表中,可如下操作: A.仿上,为控件IDC_TITLE增添一条CBN_KILLFOCUS消息响应函数: OnKillfocusTitle() B.编写函数体如下: void CListBoxDlg::OnKillfocusTitle()

17、 { // TODO: Add your control notification handler code here //获取编辑输入的内容 UpdateData(); int n=m_cTitle。GetCurSel(); if(n!=CB_ERR) m_cTitle。GetLBText(n,m_sTitle); //把编辑输入的内容增添到下拉列表中 if(m_sTitle!="” &

18、 strTitle。Find(m_sTitle,0)<0) { m_cTitle。AddString(m_sTitle); strTitle=strTitle+m_sTitle+’/'; } } C.再编译并运行程序,观察运行情况。 六.列表框List Box的初始化 1.在CListBoxDlg类中添加一个函数: 函数类型:void 函数名:InitList() 作用域:Protected

19、 2.编定函数体如下: void CListBoxDlg::InitList() { m_cList.InsertColumn(0,"编号”,LVCFMT_LEFT,70); m_cList。InsertColumn(1,”姓名",LVCFMT_LEFT,70); m_cList。InsertColumn(2,”出生年月",LVCFMT_LEFT,70); m_cList。InsertColumn(3,"性别",LVCFMT_LEFT,70);

20、 m_cList。InsertColumn(4,"职称”,LVCFMT_LEFT,70); ① m_cList.SetExtendedStyle(LVS_EX_FULLROWSELECT); } 注:①行设置列表控件的行被选中时整行反白显示 3.在CListBoxDlg类的OnInitDialog()函数中添加几条语句(红色): // TODO: Add extra initialization here InitCombo();

21、InitList(); 4编译并运行程序,观察程序的运行界面 七.在列表控件中增添、删除和插入内容 1.把输入内容增添到列表控件中 A.在CListBoxDlg类中增加一个protected类int型变量:m_nNumber, 并在CListBoxDlg类的构造函数中添加以下赋值语句: m_nNumber=1; B.在CListBoxDlg类的OnInitDialog()函数中添加四条语句(红色): InitList(); ① m_sNumber。Format("%d",m_nN

22、umber); ② GetDlgItem(IDC_DELETE)—>EnableWindow(false); ③ GetDlgItem(IDC_INSERT)->EnableWindow(false); ④ UpdateData(false); 注:①句:给编号赋初值 ②③:由于刚开始时列表控件中尚无任何内容,故不能“删除”或 “插入" ④句:回显数据. C.修改OnAdd()函数成: void CListBoxD

23、lg::OnAdd() { // TODO: Add your control notification handler code here int m,n; UpdateData(); m=m_cTitle。GetCurSel(); //获取IDC_TITLE控件内容 if(m!=CB_ERR) m_cTitle.GetLBText(m,m_sTitle); m=m_cSex。GetCurSel(); //获取IDC_SEX控件内容

24、 if(m!=CB_ERR) m_cSex.GetLBText(m,m_sSex); if(m_sName=="”||m_sBirthday==”"||m_sSex==””||m_sTitle==”") return; //把输入内容增添到列表控件中 n=m_cList.InsertItem(0,m_sNumber); m_cList.SetItemText(n,1,m_sName); m_cList.SetItemText(

25、n,2,m_sBirthday); m_cList.SetItemText(n,3,m_sSex); m_cList.SetItemText(n,4,m_sTitle); m_nNumber++; // 把职工资料初始化为空 m_sNumber.Format(”%d”,m_nNumber); m_sName="”; m_sBirthday="”; m_sSex=”"; m_nSex=-1; // 把性别组

26、合框设置成空 m_sTitle=”"; GetDlgItem(IDC_NAME)-〉SetFocus(); //把输入焦点置于IDC_NAME //控件上 UpdateData(false); } D.编译并运行程序,观察运行结果。 此时,编辑框和组合框中的输入内容能依次添加到列表控件中,并且, 若输入内容不全,会拒绝添加。 2.删除列表控件中选定行的内容 A.用“MFC CLassw

27、izard”对话框,为控件IDC_LIST添加一个消息响应函 数OnClickList(),并编写该函数如下: void CListBoxDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here *pResult = 0; int n=m_cList。GetNextItem(-1,LVNI_SELEC

28、TED); if(n!=—1) // 若所选行有效,则向对话框回显其内容 { m_sNumber=m_cList.GetItemText(n,0); m_sName=m_cList。GetItemText(n,1); m_sBirthday=m_cList。GetItemText(n,2); m_sSex=m_cList。GetItemText(n,3);

29、 m_nSex=(m_sSex=="男")?0:1; //把性别回显至性别组合框 m_sTitle=m_cList。GetItemText(n,4); GetDlgItem(IDC_DELETE)-〉EnableWindow(true); GetDlgItem(IDC_INSERT)->EnableWindow(true); GetDlgItem(IDC_ADD)—>SetWindowText("修 改");

30、 UpdateData(false); } } B.用“MFC CLasswizard”对话框,为控件IDC_DELETE添加一个消息响应 函数OnDelete(),并编写该函数如下: void CListBoxDlg::OnDelete() { // TODO: Add your control notification handler code here int n;

31、 CString s1,s2,s3,s4,str; n=m_cList.GetNextItem(—1,LVNI_SELECTED); if(n!=—1) { m_cList.DeleteItem(n); m_nNumber——; m_sNumber。Format(”%d”,m_nNumber); m_sName=”";

32、 m_sBirthday=""; m_nSex=—1; m_sTitle=”"; UpdateData(false); } } C。编译并运行程序,可见: 能在列表框中删除选行的内容,但删除内容的编号不再连续,并且按 钮IDC_APPEND的行为不正常,为解决上述问题,应: D.在OnAdd()函数中增添几条语句(红色):

33、if(m_sName=="”||m_sBirthday==””||m_sSex==""||m_sTitle==””) return; bool bState=GetDlgItem(IDC_DELETE)—〉IsWindowEnabled(); if(bState) // "删除"按钮可用时,先删除所选行 { n=m_cList。GetNextItem(—1,LVNI_SELECTED); m_cList.DeleteItem(n);

34、 GetDlgItem(IDC_DELETE)—>EnableWindow(false); GetDlgItem(IDC_INSERT)-〉EnableWindow(false); GetDlgItem(IDC_ADD)—〉SetWindowText(”添 加”); m_nNumber-—; } E.函数OnDelete()应如下编写: void CListBoxDlg::OnDelete() {

35、 // TODO: Add your control notification handler code here int i,n,ItemNo; CString s[5]; CString str="”; n=m_cList.GetNextItem(-1,LVNI_SELECTED); m_cList.DeleteItem(n); ItemNo=m_cList.GetItemCount(); for(n=0;n〈I

36、temNo;n++) { for(i=1;i<5;i++) { s[i]=m_cList。GetItemText(n,i); str=str+s[i]+”/”; } } m_cList。DeleteAllItems(); for(n=0;n

37、 m_sNumber.Format(”%d",n+1); m_sName=str.Left(i=str.Find(”/",0)); str。Delete(0,i+1); m_sBirthday=str.Left(i=str。Find(”/”,0)); str.Delete(0,i+1); m_sSex=str。Left(i=str.Find("/",0)); str.Delete(0,i+

38、1); m_sTitle=str。Left(i=str.Find("/”,0)); str.Delete(0,i+1); n=m_cList.InsertItem(0,m_sNumber); m_cList.SetItemText(n,1,m_sName); m_cList.SetItemText(n,2,m_sBirthday); m_cList。SetItemText(n,3,m_sSex

39、 m_cList.SetItemText(n,4,m_sTitle); } m_nNumber=ItemNo+1; // 把职工资料初始化为空 m_sNumber.Format("%d",m_nNumber); m_sName=””; m_sBirthday=""; m_sSex=”"; m_cSex.SetCurSel(—1); m_sTitle

40、"; GetDlgItem(IDC_DELETE)—〉EnableWindow(false); GetDlgItem(IDC_INSERT)->EnableWindow(false); GetDlgItem(IDC_APPEND)-〉SetWindowText(”添 加"); GetDlgItem(IDC_NAME)-〉SetFocus(); //把输入焦点置于IDC_NAME //控

41、件上 UpdateData(false); } F.上述函数OnDelete()编写得较复杂,当列表框中数据较多时更新速度较 慢,并且可能产生意想不到的问题。为此,函数OnDelete()可在功能不 变的前提下简化如下: void CListBoxDlg::OnDelete() { // TODO: Add your control notification handler code here int i,n,ItemNo

42、m,nc; CString s[5]; CString str=""; n=m_cList.GetNextItem(—1,LVNI_SELECTED); m_cList。DeleteItem(n); ItemNo=m_cList.GetItemCount(); for(m=n;m〈ItemNo;m++) { for(i=1;i〈5;i++) s[i]=m_cList.GetItemText(m,

43、i); m_cList。DeleteItem(m); s[0]。Format(”%d”,m+1); nc=m_cList。InsertItem(0,m_sNumber); for(i=1;i〈5;i++) m_cList.SetItemText(nc,i,s[i]); } m_nNumber=ItemNo+1; // 把职工资料初始化为空 m_sNumber。Format("%d",m_nNu

44、mber); m_sName=””; m_sBirthday=”"; m_sSex="”; m_nSex=-1; m_sTitle=””; GetDlgItem(IDC_DELETE)—〉EnableWindow(false); GetDlgItem(IDC_INSERT)—>EnableWindow(false); GetDlgItem(IDC_ADD)->SetWindowText(”添

45、加"); GetDlgItem(IDC_NAME)-〉SetFocus(); //把输入焦点置于IDC_NAME //控件上 UpdateData(false); } 3.在列表控件的选定行前插入内容 A.为“插入”按钮控件添加一条消息响应函数OnInsert(); B.编写OnInsert()函数如下: void CListBoxDlg::OnInsert() { //

46、 TODO: Add your control notification handler code here int i,n,ItemNo,m,nc; CString s[5]; n=m_cList。GetNextItem(—1,LVNI_SELECTED); ItemNo=m_cList。GetItemCount(); for(m=ItemNo—1;m〉=n;m-—) { for(i=1;i<5;i++) s[i]=m

47、cList.GetItemText(m,i); m_cList.DeleteItem(m); s[0]。Format(”%d",m+2); nc=m_cList.InsertItem(0,s[0]); for(i=1;i<5;i++) m_cList.SetItemText(nc,i,s[i]); } UpdateData(); n=m_cList。InsertItem(0,m_sNumber)

48、 m_cList。SetItemText(n,1,m_sName); m_cList.SetItemText(n,2,m_sBirthday); m_cList.SetItemText(n,3,m_sSex); m_cList。SetItemText(n,4,m_sTitle); m_nNumber=ItemNo+1; // 把职工资料初始化为空 m_sNumber。Format("%d",m_nNumber); m_sN

49、ame=””; m_sBirthday=""; m_sSex=”"; m_nSex=—1; m_sTitle="”; GetDlgItem(IDC_DELETE)->EnableWindow(false); GetDlgItem(IDC_INSERT)—>EnableWindow(false); GetDlgItem(IDC_ADD)-〉SetWindowText(”添 加”); GetDlg

50、Item(IDC_NAME)->SetFocus(); //把输入焦点置于IDC_NAME //控件上 UpdateData(false); } 八.把列表框中的数据存盘 1.在对话框模板上再增加一个资源符号为IDC_SAVE的按钮控件,把按钮标题 设置成“把列表框内容存盘" 2.为上述按钮连接一个消息响应函数OnSave(); 3.编写OnSave()函数如下: void CListBoxDlg::OnSave() {

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服