版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/9/11,1,面向对象与可视化程序设计 -Visual C+ 编程主讲教师:唐 龙教授 (计算机科学与技术系)黄维通博士 (计算机与信息管理中心)清 华 大 学2001年2月,2020/9/11,2,第十一章编辑框类及其应用,2020/9/11,3,内容提要,编辑框类的结构及其方法 编辑框类控件的应用,2020/9/11,4,11.1.编辑框类的结构及其方法,2020/9/11,5,1.CEdit类,编辑框控件主要功能输入或编辑文本 编辑框控件 单行编辑框控件 多行编辑框控件 Cedit类是Cwnd类直接派生的。,2020/9/11,6,1.CEdit类,在MFCIncludeAfx
2、win.h中定义了Cedit类 当创建CEdit对象时,MFC自动赋予该对象一个标准的Windows编辑控件,它定义了CEdit对象。,class CEdit : public CWnd DECLARE_DYNAMIC(CEdit) public: CEdit(); /此为构造函数定义,以下定义成员函数 BOOL Create(DWORD dwStyle, const RECT,CEidt类的定义,2020/9/11,8,#if (WINVER = 0 x400) void SetMargins(UINT nLeft, UINT nRight); DWORD GetMargins() cons
3、t; void SetLimitText(UINT nMax); UINT GetLimitText() const; CPoint PosFromChar(UINT nChar) const; int CharFromPos(CPoint pt) const; #endif int GetLine(int nIndex, LPTSTR lpszBuffer) const; int GetLine(int nIndex, LPTSTR lpszBuffer, int nMaxLength) const; / 操作 void EmptyUndoBuffer(); BOOL FmtLines(BO
4、OL bAddEOL);,lpszBuffer的第一个字必须 是 buffer的大小!,void LimitText(int nChars = 0); int LineFromChar(int nIndex = -1) const; int LineIndex(int nLine = -1) const; int LineLength(int nLine = -1) const; void LineScroll(int nLines, int nChars = 0); void ReplaceSel(LPCTSTR lpszNewText, BOOL bCanUndo = FALSE); vo
5、id SetPasswordChar(TCHAR ch); void SetRect(LPCRECT lpRect); void SetRectNP(LPCRECT lpRect); void SetSel(DWORD dwSelection, BOOL bNoScroll = FALSE); void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = FALSE); BOOL SetTabStops(int nTabStops, LPINT rgTabStops); void SetTabStops(); BOOL SetTabSto
6、ps(const int / takes an int,/ 剪贴板操作 BOOL Undo(); void Clear(); void Copy(); void Cut(); void Paste(); BOOL SetReadOnly(BOOL bReadOnly = TRUE); int GetFirstVisibleLine() const; TCHAR GetPasswordChar() const; / Implementation public: virtual CEdit(); /虚拟析构函数 ;,2020/9/11,13,11.2.编辑框控件的应用,2020/9/11,14,例
7、11-1设计并实现带有两个编辑框的应用程序,其窗口布局如 图11-1,功能如下: 单击ShowlEdit1编辑框中显示“This is the first EditBox.” 单击Clear1Edit1编辑框中的内容被清除; 单击Show2Edit2编辑框中显示“This is the second EditBox!” 单击Clear2Edit2编辑框中的内容被清除; 单击TransferEdit1编辑框的内容复制到Edit2的编辑框中去 单击Undo取消上一次操作 单击Exit退出程序的运行,图11-1 应用程序的窗口布局,2020/9/11,16,1.编程过程,建立工程文件:用MFC Ap
8、pWizard(exe) 工程项目名称:EditBox 建立基于对话框的应用程序,选择Dialog based,生成对话框窗口作为主窗口。 可视化编程: 设计界面 连接变量 修改特性 添加代码,2.设计界面,在EditBox的工作区中选择Resource View 在名为IDD_EDITBOX_DIALOG的对话框作为应用程序的主窗口中进行界面设计,生成了工程文件和 工程工作区文件后 在EditBox的工作区 中选择ResourceView,VC在工作台中显示可以进行可视化编辑的IDD_EDITBOX_DIALOG对话框,直接利用控件工具窗实现可视化操作。,把鼠标停在 编辑框控件 上,即可显
9、示该控件的 类型。,控件工具窗 提供了VC中 所有可建立 的控件类型,编辑框控件布置对话框中如编辑框。,将鼠标移到Edit1编辑框上; 单击鼠标右键,并在快捷菜单中选择Properties命令; 在窗口中输入控件的ID标识值IDC_EDIT1; 用同样的方法设置其它各个对象的属性。,3.给界面对象连接变量,在编辑框EDIT1中,单击鼠标右键,在弹出的快捷菜单中,选择ClassWizard; 选择Member Variables; 单击IDC_EDIT1;,(a)选择Member Variables选项卡,(b)单击Control Ids列表 框中IDC_EDIT1项, 使之高亮化,(c) 单击
10、Add Variable 按钮,显示Add MemberVariable窗口,单击Add Variable按钮,显示AddMemberVariable窗口; 成员变量名设置为m_Edit1; 类别设置为Control; 变量类型设置为CEdit。,注意:只有将m_Edit1设为CEdit 类型,才能调用该类的Copy () , Paste () 等成员函数,实现本应用程序的操作。,(d)置Member Variables name 为m_Edit1,(f)置 Variable type为CEdit1,(e)置Categroy 为Control,用同样的方法给编辑框EDIT2等其它对象连接各自的
11、变量; 最终,ClassWizard窗口将变为下图所示。,水平及垂 直滚动条,4 .修改编辑框的特性,在编辑框EDIT1中,单击鼠标右键; 在快捷菜单中,选Properties命令; 选Styles选项卡,进行设置,修改其的特性。 用同样方法修改EDIT2的特性。,多行 编辑,允许回车键,可实现多行文本输入,5 . 给界面对象连接函数添加代码,在按钮Showl上,单击鼠标右键,在弹出的快捷菜单中,选择ClassWizard; 选择Message Map; 单击IDC_SHOW1_BUTTON; 单击BN_CLICKED,(a)选择Member Map选项卡,(b)单击Object Ids列表框
12、中 IDC_SHOW1_BUTTON项,,(d) 单击Add Function 按钮,显示Add MemberFunction窗口,(c)单击Message列表框 中BN_CLICKED项,,单击Add Function按钮,弹出Add Member Function窗口 接受Add Member Function建议的函数名OnShow1Button(); Member functions中增加了成员函数OnShow1Button(); 单击Edit Code按钮, 显示代码文件,进行添加代码。,(e)接受Add Member Function建议的函数 名OnShow1Button(),(
13、b) Member functions 列表框中中增加了成员 函数OnShow1Button(),(d) 单击Edit Code, 显示代码文件, 添加代码,void CEditBoxDlg:OnShow1Button() m_Edit1.SetSel(0,-1); /选中编辑框IDC_EDIT1中的全部内容 m_Edit1.ReplaceSel(This is the first EditBox.);/替换内容 请注意:程序中SetSel()和 ReplaceSel()都是CEdit类中的成员函数,m_Edit1是属于CEdit类的对象,可以调用之。,(1) 给Showl按钮连接代码,(2)
14、 给 Clear1按钮连接代码,void CEditBoxDlg:OnClear1Button() m_Edit1.SetSel(0,-1);/选中编辑框IDC_EDIT1中的全部内容 m_Edit1.ReplaceSel();/用空字符串代替所选文本,即删除之 ,(3)给Show2和Clear2按钮连接代码,void CEditBoxDlg:OnShow2Button() m_Edit2.SetSel(0,-1);/选中编辑框IDC_EDIT2中的全部内容。 m_Edit2.ReplaceSel(This is the second EditBox.); /替换内容 void CEditBo
15、xDlg:OnClear2Button() m_Edit2.SetSel(0,-1);/选中编辑框IDC_EDIT2中的全部内容。 m_Edit2.ReplaceSel();/用空字符串代替所选文本,即删除之 ,(4)给按钮IDC_Transfer_BUTTON连接代码,void CEditBoxDlg:OnCopyButton() m_Edit1.SetSel(0,-1); m_Edit1.Copy();/将m_Editl编辑框中所选的内容拷贝到剪贴板上 m_Edit2.SetSel(0,-1); m_Edit2.ReplaceSel(); m_Edit2.Paste();/将剪贴板中的内容粘贴到m_Edit2编辑框中 ,(5) 给 Undo按钮连接代码,void CEditBoxDlg:OnUndoButton() m_Edit1.Undo();/ 取消编辑框中上一次操作 m_Edi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学小学教育(小学科学教学)试题及答案
- 2025年大学国际经济与贸易(国际贸易实务)试题及答案
- 2025年大学社区护理基础(护理基础)试题及答案
- 2025年中职人工智能技术应用(智能产品设计)试题及答案
- 2026年蛋类食品(沙门氏菌检测)试题及答案
- 2025年中职电工(低压电工技术)试题及答案
- 2025年高职区块链应用技术(智能合约开发)试题及答案
- 2025年高职物流管理(物流方案策划)试题及答案
- 2025年高职汉语言文学教育(文学作品赏析)试题及答案
- 2025年高职(汽车检测与维修技术)汽车发动机电控实训试题及答案
- DB52-T 1671-2022 迷迭香栽培技术规程
- 年度采购工作总结
- 宫外孕大出血抢救流程
- 环境保护与水土保持管理制度
- 离子镀膜技术
- 加油站反恐防范工作预案
- 渣土车租赁合同
- 2025届高考小说专题复习-小说叙事特征+课件
- 蓝色简约质量意识培训模板
- 2024年广州市中考语文试卷真题(含官方答案及解析)
- 新教材高中数学第八章立体几何初步8.4.1平面课件
评论
0/150
提交评论