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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

控件上机指导书.docx

1、控件上机指导书控件示例1 第一步 用AppWizard建立一个基于对话框的MFC应用程序。将新建工程命名为TestCtrl1,在AppWizard的Step 1对话框中选择Dialog based选项,其它按照默认设置。AppWizard自动建立一个作为应用程序主窗口的对话框模板IDD_TESTCTRL1_DIALOG及其对应的对话框类CTestCtrl1Dlg。提示:对该对话框的使用与普通对话框并没有什么不同,只不过在程序启动后对话框会自动显示出来,而当用户关闭对话框后,应用程序也就终止了。如果读者观察CTestCtrl1App:InitInstance函数就会发现,该函数调用DoModal

2、来显示一个CTestCtrl1Dlg对话框,并使m_pMainWnd指针指向CTestCtrl1Dlg对象,从而使该对话框成为程序的主窗口。 第二步 设计IDD_TESTCTRL1_DIALOG对话框模板。删除该模板上除Cancel按钮以外的控件。并根据图6.2和表6.5,向IDD_TESTCTRL1_DIALOG对话框模板中加入控件。表6.5 控件属性控件类型ID标题其他属性静态图片IDC_STATIC_BITMAPType列表框选择Bitmap选中Center image属性静态文本IDC_STATIC_TITLE标题缺省组框缺省选择图片缺省单选按钮IDC_RADIO1女士选中Group属

3、性单选按钮IDC_RADIO2夫妇缺省组框缺省选择标题缺省单选按钮IDC_RADIO3女士选中Group属性单选按钮IDC_RADIO4夫妇缺省组框缺省改变缺省复选框IDC_CHECK1同时改变缺省命令按钮IDC_BUTTON_ALTER修改选中Default button属性命令按钮IDCANCEL关闭缺省提示:因为顺序添加的单选按钮被看成是一组,该组中只有一个单选按钮能被选中;而本例中IDC_RADIO1和IDC_RADIO2为一组,IDC_RADIO3和IDC_RADIO4为一组,因此一定要选中IDC_RADIO3的Group属性。 第三步 利用“Insert Resource”对话框为

4、应用程序添加位图。添加位图资源的方法是:选择【Insert】、【Resource】或使用组合键【Ctrl+R】,打开“Insert Resource”对话框,在“Resource Type”中选择“Bitmap”,单击【Import】按钮,打开“Import Resource”对话框,浏览并选择要添加的bmp文件,单击【Import】按钮系统就会自动为当前应用程序添加一个位图资源,位图编辑器随之打开,第一个位图资源的默认ID为IDB_BITMPA1,可以在其属性对话框中修改。用这种方法添加两个位图资源,ID分别为IDB_BITMPA1和IDB_BITMPA2。 第四步 利用ClassWizar

5、d为CTestCtrl1Dlg类添加控件关联变量,如表6.6所示。表6.6 CTestCtrl1Dlg类的控件关联变量控件ID变量类型变量名IDC_CHECK1CButtonm_ctrCheckIDC_STATIC_BITMAPCStaticm_ctrBmpIDC_STATIC_TITLECStringm_strTitle 第五步 为CTestCtrl1Dlg类添加成员变量,如表6.7所示。表6.7 CTestCtrl1Dlg类成员变量变量类型变量名称用途BOOLm_pBool记录图片控件显示的是哪个位图CBitmapm_cBmp加载位图 第六步 用ClassWizard为CTestCtrl1

6、Dlg类添加控件消息处理函数,如表6.8所示。表6.8 CTestCtrl1Dlg的控件通知消息处理函数控件ID消息消息处理函数IDC_RADIO1BN_CLICKEDOnRadio1(缺省名)IDC_RADIO2BN_CLICKEDOnRadio2(缺省名)IDC_RADIO3BN_CLICKEDOnRadio3(缺省名)IDC_RADIO4BN_CLICKEDOnRadio4(缺省名)IDC_BUTTON_ALTERBN_CLICKEDOnButtonAlter(缺省名) 第七步 编写CTestCtrl1Dlg:OnRadio1()消息处理函数。void CTestCtrl1Dlg:OnR

7、adio1() if(!m_pBool) m_cBmp.DeleteObject(); / 从内存中删除与m_cBmp关联的GDI结构 m_cBmp.LoadBitmap(IDB_BITMAP1); / 加载位图1 m_ctrBmp.SetBitmap(HBITMAP(m_cBmp); / 在图片控件中显示位图1 m_pBool=true; / 记录图片控件中显示的是位图1 第八步 编写CTestCtrl1Dlg:OnRadio2()消息处理函数。 void CTestCtrl1Dlg:OnRadio2() if(m_pBool) m_cBmp.DeleteObject(); / 从内存中删除

8、与m_cBmp关联的GDI结构 m_cBmp.LoadBitmap(IDB_BITMAP2); / 加载位图2 m_ctrBmp.SetBitmap(HBITMAP(m_cBmp);/ 在图片控件中显示位图2 m_pBool=false; / 记录图片控件中显示的是位图2 第九步 编写CTestCtrl1Dlg:OnRadio3()消息处理函数。void CTestCtrl1Dlg:OnRadio3() CButton * pBtn=(CButton *)GetDlgItem(IDC_RADIO3); / 获取单选按钮IDC_RADIO3控件的窗口指针 pBtn-GetWindowText(m

9、_strTitle); / 获得IDC_RADIO3的标题,并赋给静态文本框的字符串型关联变量 UpdateData(false); / 将数据从文本框的关联变量传至控件显示 第十步 编写CTestCtrl1Dlg:OnRadio4()消息处理函数。void CTestCtrl1Dlg:OnRadio4() CButton * pBtn=(CButton *)GetDlgItem(IDC_RADIO4); pBtn-GetWindowText(m_strTitle); UpdateData(false); 第十一步 编辑CTestCtrl1Dlg:OnButtonAlter()消息处理函数。v

10、oid CTestCtrl1Dlg:OnButtonAlter() int n=m_ctrCheck.GetState(); /获取复选框IDC_CHECK1的选择状态 if(m_pBool) / 若之前显示的是位图1,则改变为显示位图2 CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO2);/ 把IDC_RADIO2设为选中状态 m_cBmp.DeleteObject(); m_cBmp.LoadBitmap(IDB_BITMAP2); m_ctrBmp.SetBitmap(HBITMAP(m_cBmp); m_pBool=false; if(

11、n=1) / 若复选框为选中状态,则改变静态文本框的内容,并改变单选按钮状态 CButton * pBtn=(CButton *)GetDlgItem(IDC_RADIO4); pBtn-GetWindowText(m_strTitle); CheckRadioButton(IDC_RADIO3,IDC_RADIO4,IDC_RADIO4); / 把IDC_RADIO4设为选中状态 UpdateData(false); else / 若之前显示的是位图2,则改变为显示位图1 CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1); / 把IDC_R

12、ADIO1设为选中状态 m_cBmp.DeleteObject(); m_cBmp.LoadBitmap(IDB_BITMAP1); m_ctrBmp.SetBitmap(HBITMAP(m_cBmp); m_pBool=true; if(n=1) / 若复选框为选中状态,则改变静态文本框的内容,并改变单选按钮状态 CButton * pBtn=(CButton *)GetDlgItem(IDC_RADIO3); pBtn-GetWindowText(m_strTitle); CheckRadioButton(IDC_RADIO3,IDC_RADIO4,IDC_RADIO3); / 把IDC_

13、RADIO3设为选中状态 UpdateData(false); 第十二步 修改对话框初始化函数CTestCtrl1Dlg:OnInitDialog()。添加如下代码:BOOL CTestCtrl1Dlg:OnInitDialog() m_cBmp.LoadBitmap(IDB_BITMAP1); / 加载位图1 m_ctrBmp.SetBitmap(HBITMAP(m_cBmp); / 显示位图1 m_pBool=true; / 记录图片控件显示的是位图1 CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1); / 将IDC_RADIO1设为选中

14、状态 CheckRadioButton(IDC_RADIO3,IDC_RADIO4,IDC_RADIO3); / 将IDC_RADIO3设为选中状态 CButton * pBtn=(CButton *)GetDlgItem(IDC_RADIO3); pBtn-GetWindowText(m_strTitle); / 将静态文本的内容设置为IDC_RADIO3的标题 UpdateData(false); / 将数据从文本框的关联变量传至控件显示 return TRUE; / return TRUE unless you set the focus to a control 第十三步 创建和运行T

15、estCtrl1.exe应用程序。控件示例2 第一步 用AppWizard建立一个基于对话框的MFC应用程序。AppWizard会自动建立一个用于应用程序主窗口的对话框模板IDD_TESTCTRL2_DIALOG及其对应的对话框类CTestCtrl2Dlg。 第二步 设计IDD_TESTCTRL2_DIALOG对话框模板。将该模板上除Cancel按钮以外的控件都删除掉,并根据图6.7和表6.22,向对话框模板中加入控件。 表6.22 控件属性控件类型ID标题其他属性静态文本缺省姓名:缺省静态文本缺省年龄:缺省静态文本IDC_STATIC_INDICATOR缺省静态文本缺省记录:缺省静态文本缺省

16、选择:缺省组合框IDC_COMBO_BOX缺省组框缺省性别:缺省单选按钮IDC_RADIO_BOY男缺省单选按钮IDC_RADIO_GIRL女缺省列表框IDC_LIST_BOX在Selection栏中选择Extended,去掉Sort属性编辑框IDC_EDIT_MULTI选择Multiline,Vertical scroll,AutoVScroll和Want return属性滚动条IDC_SCROLLBAR缺省命令按钮IDC_BUTTON_ADD添加缺省命令按钮IDC_BUTTON_ALTER修改缺省命令按钮IDC_BUTTON_DELETE删除缺省命令按钮ID_BUTTON_CLEAR清除缺

17、省命令按钮IDCANCEL关闭缺省 第三步 利用ClassWizard为CTestCtrl2Dlg类加入成员变量,如表6.23所示:表6.23 CTestCtrl2Dlg类的成员变量控件ID变量类型变量名IDC_COMBO_BOXCString m_strNameIDC_COMBO_BOXCComboBoxm_comboBoxIDC_EDIT_MULTICEditm_multiEditIDC_LIST_BOXCListBoxm_listBoxIDC_SCROLLBARCScrollBarm_scrollBarIDC_STATIC_INDICATORCStringm_strAgeIDC_STAT

18、IC_INDICATORCStaticm_Indicator 第四步 用ClassWizard为CTestCtrl2Dlg类加入通知消息处理函数,如表6.24所示。表6.24 CTestCtrl2Dlg的通知消息处理函数对象ID消息消息处理函数IDC_BUTTON_ADDBN_CLICKEDOnButtonAdd(缺省名)IDC_BUTTON_ALTERBN_CLICKEDOnButtonAlter(缺省名)IDC_BUTTON_DELETEBN_CLICKEDOnButtonDelete(缺省名)IDC_BUTTON_CLEARBN_CLICKEDOnButtonClear(缺省名)IDCA

19、NCELBN_CLICKEDOnCancel(缺省名)IDC_COMBO_BOXCBN_SELCHANGEOnSelchangeCombobox(缺省名)CTestCtrl2DlgWM_HSCROLLOnHScroll(缺省名) 第五步 编写CTestCtrl2Dlg:OnButtonAdd()消息处理函数。void CTestCtrl2Dlg:OnButtonAdd() UpdateData(); m_strName.TrimLeft(); / 去掉空格 if(m_strName.IsEmpty() / 若为空 MessageBox(学生名字无效!); return; int nIndex=

20、m_comboBox.FindStringExact(-1,m_strName); / 查找匹配项 if(nIndex!=CB_ERR) / 若有匹配项则不用添加 MessageBox(该同学的名字已添加!); return; CString strData,strSex; UINT nID=GetCheckedRadioButton(IDC_RADIO_BOY,IDC_RADIO_GIRL);/ 获取被选中的单选按钮ID号 GetDlgItemText(nID,strSex); / 获取被选中单选按钮的标题 strData.Format(%s,%s,%s,m_strName,strSex,m

21、_strAge); / 格式化字符串 nIndex=m_comboBox.AddString(m_strName); / 添加组合框列表项 m_comboBox.SetItemDataPtr(nIndex,new CString(strData); / 添加表项关联数据 m_listBox.AddString(strData); /添加列表框 第六步 编写CTestCtrl2Dlg:OnButtonAlter()消息处理函数。void CTestCtrl2Dlg:OnButtonAlter() UpdateData(); int nIndex=m_comboBox.FindStringExac

22、t(-1,m_strName); / 在组合框中查找匹配项 if(nIndex!=CB_ERR) / 若找到 CString strData,strSex; int listIndex; strData=*(CString*)m_comboBox.GetItemDataPtr(nIndex); / 获取表项关联数据 listIndex=m_listBox.FindString(-1,strData); / 在列表框查找匹配项 delete (CString*)m_comboBox.GetItemDataPtr(nIndex); / 在组合框中删除该表项 UINT nID=GetCheckedR

23、adioButton(IDC_RADIO_BOY,IDC_RADIO_GIRL); GetDlgItemText(nID,strSex); strData.Format(%s,%s,%s,m_strName,strSex,m_strAge); m_comboBox.SetItemDataPtr(nIndex,new CString(strData); m_listBox.DeleteString(listIndex); m_listBox.InsertString(listIndex,strData); UpdateData(false); 第七步 编写CTestCtrl2Dlg:OnButt

24、onDelete()消息处理函数。void CTestCtrl2Dlg:OnButtonDelete() int i,count; int *pBuffer; count=m_listBox.GetSelCount(); /获得选择项的数目 if(count=0;i-) / 倒序删除选择项 CString strData,strName; int nIndex; m_listBox.GetText(pBufferi,strData); /获取指定列表项的字符串 nIndex=strData.Find(,); strName=strData.Left(nIndex); /从中提取出姓名存入str

25、Name nIndex=m_comboBox.FindStringExact(-1,strName); /获取与strName匹配项的索引 delete (CString *)m_comboBox.GetItemDataPtr(nIndex); /删除nIndex项的关联信息 m_comboBox.DeleteString(nIndex); /删除nIndex表项 m_listBox.DeleteString(pBufferi); /删除列表框的选择表项 UpdateData(false); delete pBuffer; 注意:这里是倒序删除的,如果按顺序删除,则会使选择项的索引产生错位。

26、第八步 编写CTestCtrl2Dlg:OnButtonClear()消息处理函数。void CTestCtrl2Dlg:OnButtonClear() m_multiEdit.SetSel(0,-1); / 选择编辑框的全部正文 m_multiEdit.ReplaceSel(); / 用空串替换选中正文,即清除正文 第九步 编写CTestCtrl2Dlg:OnCancel()消息处理函数。void CTestCtrl2Dlg:OnCancel() / 获取组合框的表项个数,逐个删除 for (int nIndex=m_comboBox.GetCount()-1;nIndex=0;nIndex

27、-) delete (CString *)m_comboBox.GetItemDataPtr(nIndex); CDialog:OnCancel(); 第十步 编写CTestCtrl2Dlg:OnSelchangeComboBox()消息处理函数。void CTestCtrl2Dlg:OnSelchangeComboBox() int length=m_multiEdit.GetWindowTextLength(); / 获取编辑框的正文长度 CString str,strData; m_multiEdit.SetSel(-1,0); / 取消正文的选择 m_multiEdit.SetSel(

28、length,length); / 将插入符移动到编辑正文的末尾 m_comboBox.GetLBText(m_comboBox.GetCurSel(),str); / 获取指定列表项的字符串 strData=*(CString*)m_comboBox.GetItemDataPtr(m_comboBox.GetCurSel(); / 获取表项的关联数据 str=str+ selectedrn+strData+rn; m_multiEdit.ReplaceSel(str); / 用指定字串替换编辑框正文提示:本例中插入编辑正文的方法是先调用CEdit:SetSel移动插入符到指定位置(必要时要滚动以使该位置可见),然后再调用CEdit:ReplaceSel插入新的正文,这样做的好处是编辑框总是滚动到新修改过的地方,从而使得新修改过的地方总是可见的。 第十一步 编写CTestCtrl2Dlg:OnHScroll()消息处理函数。void CTestCtrl2Dlg:OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) int nScrollMin,nScrollMax,nScrollPos; int nPageSize; CSt

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

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