




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
对话框与控件编程一、对话框编程l 创建一个基于单文档视图框架的应用程序。l 执行菜单命令:视图/资源视图,进入资源视图窗口,点击Dialog资源项,右键添加一个对话框资源。l 在对话框资源窗口上右键,添加对话框类。l 在主菜单资源的视图菜单中添加新菜单项,用于显示对话框。将新添加的菜单项的消息处理函数映射到View类中。一、添加对话框类l 在新加的菜单消息处理函数中添加代码l CDlgExam1 dlg;dlg.DoModal();通过调用Cdialog类的DoModal()函数显示的对话框都是模态对话框。“模态对话框”指对话框被弹出后,用户必须在对话框中作出相应的操作,在退出对话框之前,对话框所在应用程序的其他操作不能继续执行。“非模态对话框”指对话框被弹出后,一直保留在屏幕上,用户可继续在对话框所在应用程序中执行其他操作。当需要使用对话框时,只需像激活窗口一样单击对话框所在区域即可。非模态对话框的编写和使用1.添加一个新的对话框资源2.添加一个新的对话框类CDlgNonModal3.为对话框添加一个静态整型变量NumOfInstance,初始化为0;3.重载对话框类的OnCancel和PostNcDestroy函数void CDlgNonModal:OnCancel()DestroyWindow();CDlgNonModal:NumOfInstance = 0;void CDlgNonModal:PostNcDestroy()CDialog:PostNcDestroy();delete this;int CDlgNonModal:NumOfInstance = 0;CDlgNonModal:CDlgNonModal(CWnd* pParent /*=NULL*/): CDialog(CDlgNonModal:IDD, pParent)CDlgNonModal:NumOfInstance+;4. 在View类中添加菜单命令处理函数if (CDlgNonModal:NumOfInstance = 0)CDlgNonModal* pDlg = new CDlgNonModal(0);pDlg-Create(IDD_DIALOG1);pDlg-ShowWindow(SW_SHOW);思考:如果需要在对话框类的成员函数中调用View类的成员函数?应该如何设计对话框类?在对话框类的成员函数中如何获取应用程序的View类实例的指针?只要为新创建的对话框类的构造函数添加一个View类的指针,在创建对话框类时,传入View的指针即可。二、按钮控件l 1、单选按钮l 添加group box控件l 将单选按钮控件放在group box控件中l 将每个group box控件中的第一个单选按钮的Group属性值设为true,保证不同group box控件中的单选按钮互不影响初始化单选按钮的选择状态重载对话框的OnInitDialog()函数,使用对话框成员函数CheckRadioButton()初始化一个group box中的单选按钮选择状态。void CheckRadioButton(int nIDFirstButton, int nIDLastButton, int nIDCheckButton)获取一个group box中的单选按钮选择值:使用对话框的GetCheckedRadioButton()成员函数获取选中的单选按钮的ID号,使用对话框的GetDlgItemTextW()获取单选按钮的文本。int GetCheckedRadioButton(int nIDFirstButton, int nIDLastButton);长春理工大学计算机科学技术学院 陈纯毅CheckRadioButton(IDC_RADIO_MALE,IDC_RADIO_FEMALE,IDC_RADIO_MALE);void CDlgExam1:OnBnClickedButOk()int nID=GetCheckedRadioButton(IDC_RADIO_MALE, IDC_RADIO_FEMALE);CString strAge,strSex;GetDlgItemTextW(nID,strSex);CDialog:OnOK();MessageBox(CString(L你的选择是:)+strSex);2、复选框按钮一个group box中的复选框按钮的初始化使用对话框类的GetDlgItem()获得复选框按钮对象的指针,将该指针转换成Cbutton类型指针,使用Cbutton的SetCheck成员函数设置复选框按钮。获取一个group box中被勾选的复选框按钮的文本将所有复选框按钮的ID号存在一个数组中。通过循环,使用GetDlgItem()获得每个复选框按钮对象的指针,并转换成Cbutton指针,通过CButton的GetCheck()判断复选框是否被勾选,使用Cbutton的GetWindowText()获取复选框文本。CButton* pBut = (CButton*)GetDlgItem(IDC_CHECK1);pBut-SetCheck(1);void CDlgExam1:OnBnClickedButOk()int nIDs3=IDC_CHECK1, IDC_CHECK2,IDC_CHECK3;CButton* pBut;CString buf,strPrefer=L;for(int i=0;iGetDlgItem(nIDsi);if(pBut-GetCheck()pBut-GetWindowTextW(buf);strPrefer = strPrefer + CString(L ) + buf;CDialog:OnOK();MessageBox(CString(L你的选择是:)+strPrefer);三、编辑框(1)多行编辑框将编辑框的Multiline和Want Return属性同时设置为true。为编辑框控件绑定一个CEdit类型的变量。使用CEdit的GetLineCount()获取文本的行数,使用CEdit的LineLength()获取指定行的字符数,使用Cedit的GetLine()获取指定行的字符。例程:TCHAR str100;if(m_edit.GetLineCount()=2) int nChars; nChars = m_edit.LineLength(1); m_edit.GetLine(1,str,nChars); strnChars = 0; MessageBox(str);(2)密码输入编辑框重载对话框的OnInitDialog();为编辑框控件绑定一个CEdit类型的变量,使用CEdit的SetPasswordChar()设置密码显示字符例程:m_edit.SetPasswordChar(*);长春理工大学计算机科学技术学院 陈纯毅幻灯片22(3)数字输入编辑框设置编辑框控件的Number属性为True。只能输入数字和小数点?(1)在解决方案中添加一个新的MFC类CNumEdit, CNumEdit继承自CEdit。(2)为CNumEdit添加WM_CHAR消息处理函数void CNumEdit:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)if(nChar = . | (nChar=0 & nChar =9)CEdit:OnChar(nChar, nRepCnt, nFlags);(3)为编辑框绑定一个CNumEdit类型的控件变量。(4)带旋转按钮的编辑框在添加编辑框后,接着就添加一个Spin Control控件,设置Spin Control的Auto Buddy属性为True,设置Set Buddy Integer属性为True。为Spin Control绑定一个CSpinButtonCtrl变量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摩根士丹利-中国电商行业2025年第二季度财报前瞻 China E-Commerce - What to expect from 2Q25 prints
- 2025年初中美术特岗教师招聘考试备考策略及模拟题解析
- 2025年物业管理实务中级面试模拟题集与答案解析
- 2025年高级炼油操作工常见问题解答及面试注意事项
- 物理性污染控制课程设计
- 转基因技术的危害
- 关于精准教学的课件
- 医学教师教学竞赛课件
- 江苏苏州2012-2020年中考满分作文79篇
- 用电电气安全知识培训课件
- 2025年十八项核心制度考试试题库(含答案)
- 2025年食堂安全培训考试题及答案
- 反诈防骗安全知识培训课件
- 砂石垫资合作协议合同范本
- 红十字应急救护创伤止血
- 2025-2026学年高二上学期开学入学教育主题班会【课件】
- 北师大版八年级数学上册第一章 勾股定理 单元测试卷(含答案)
- (新教材)人教版二年级上册小学数学教学计划+教学进度表
- 护工清洁护理培训
- 出租房屋安全管理办法
- 违法建筑用电管理办法
评论
0/150
提交评论