vc3第11章编辑框类及其应用_第1页
vc3第11章编辑框类及其应用_第2页
vc3第11章编辑框类及其应用_第3页
vc3第11章编辑框类及其应用_第4页
vc3第11章编辑框类及其应用_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021-11-121 2021-11-1222021-11-1232021-11-1242021-11-1251.cedit类类2021-11-1261.cedit类类afxwin.hclass cedit : public cwnd declare_dynamic(cedit)public: cedit(); /此为此为构造函数构造函数定义,以下定义成员函数定义,以下定义成员函数 bool create(dword dwstyle, const rect& rect, cwnd* pparentwnd, uint nid); bool canundo() const; int ge

2、tlinecount() const; bool getmodify() const; void setmodify(bool bmodified = true); void getrect(lprect lprect) const; dword getsel() const; void getsel(int& nstartchar, int& nendchar) const; hlocal gethandle() const; void sethandle(hlocal hbuffer);ceidt类的定义类的定义2021-11-128#if (winver = 0 x400

3、) void setmargins(uint nleft, uint nright); dword getmargins() const; 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, in

4、t nmaxlength) const;/ 操作操作 void emptyundobuffer(); bool fmtlines(bool 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 ncha

5、rs = 0);void replacesel(lpctstr lpsznewtext, bool bcanundo = false);void 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

6、 ntabstops, lpint rgtabstops);void settabstops();bool settabstops(const int& cxeachstop); / takes an int/ 剪贴板操作剪贴板操作 bool undo(); void clear(); void copy(); void cut(); void paste(); bool setreadonly(bool breadonly = true); int getfirstvisibleline() const; tchar getpasswordchar() const;/ impleme

7、ntationpublic: virtual cedit(); /虚拟虚拟析构函数析构函数;表表 11-1 通通用用 cedit 类类的的方方法法方方法法说说明明canundo()决决定定一一个个编编辑辑操操作作是是否否可可以以撤撤销销clear()从从编编辑辑控控件件中中删删除除当当前前的的选选择择(如如果果有有的的话话)copy()将将编编辑辑控控件件当当前前的的选选择择(如如果果有有的的话话)以以 cf_text 格格式式复复制制到到剪剪贴贴板板中中cut()剪剪下下编编辑辑控控件件中中的的当当前前选选择择(如如果果有有的的话话)并并以以 cf_text 格格式式复复制制到到剪剪贴贴板板

8、中中emptyundobuffer()消消除除一一个个编编辑辑控控件件的的“撤撤销销”标标志志getfirstvisibleline()确确定定编编辑辑控控件件中中的的最最上上面面的的可可视视行行getmodify()确确定定一一个个编编辑辑控控件件的的内内容容是是否否可可修修改改getpasswordchar()当当用用户户输输入入文文本本时时,获获得得编编辑辑控控件件中中显显示示的的密密码码字字符符getrect()获获得得一一个个编编辑辑控控件件的的格格式式化化矩矩形形getsel()获获得得编编辑辑控控件件中中当当前前选选择择的的开开始始和和结结束束字字符符位位置置limittext(

9、)限限定定用用户户可可能能输输入入一一编编辑辑控控件件的的文文本本长长度度linefromchar()获获得得包包含含指指定定字字符符下下标标的的行行的的行行号号linelength()获获得得编编辑辑控控件件中中的的一一行行的的长长度度linescroll()滚滚动动多多行行编编辑辑控控件件的的文文本本paste()将将剪剪贴贴板板的的数数据据插插入入到到编编辑辑控控件件作作当当前前的的光光标标位位置置,只只有有当当前前剪剪贴贴板板中中数数据据格格式式为为 cf_text 时时方方可可插插入入replacesel()用用指指定定文文本本替替代代编编辑辑控控件件中中当当前前选选择择的的部部分分

10、setmodify()设设置置或或清清除除编编辑辑控控件件的的修修改改标标志志setpasswordchar()当当用用户户输输入入文文本本时时设设置置或或删删除除一一个个显显示示于于编编辑辑控控件件中中的的密密码码字字符符setreadonly()将将编编辑辑控控件件设设置置为为只只读读状状态态setsel()在在编编辑辑控控件件中中选选择择字字符符的的范范围围undo()取取消消最最后后一一个个编编辑辑控控件件操操作作表表 11-2 多行编辑所支持的多行编辑所支持的 cedit 法法方法方法说明说明fmtlines()设置在多行编辑控件中包含软分行符设置在多行编辑控件中包含软分行符geth

11、andle()获得当前分配给一个多行编辑控件的内存的句柄获得当前分配给一个多行编辑控件的内存的句柄getline()从一编辑控件中获得一行文本从一编辑控件中获得一行文本getlinecount()获得多行编辑控件的行数获得多行编辑控件的行数lineindex()设置多行编辑控件中一行的字符下标设置多行编辑控件中一行的字符下标sethandle()设置多行编辑控件将要用到的句柄内存句柄设置多行编辑控件将要用到的句柄内存句柄setrect()设置多行编辑控件的格式化矩形并更新控件设置多行编辑控件的格式化矩形并更新控件setrectnp()设置多行编辑控件的格式化矩形并且不重绘控件窗口设置多行编辑控

12、件的格式化矩形并且不重绘控件窗口settabstops()在多行编辑控件中设置制表在多行编辑控件中设置制表(tab)位位2021-11-12132021-11-1214例例11-1设计并实现带有两个编辑框的应用程序设计并实现带有两个编辑框的应用程序,其其窗口布局窗口布局如如 图图11-1,功能如下,功能如下:f单击单击showledit1编辑框中显示编辑框中显示“this is the first editbox.”f单击单击clear1edit1编辑框中的内容被清除;编辑框中的内容被清除;f单击单击show2edit2编辑框中显示编辑框中显示“this is the second editb

13、ox!”f单击单击clear2edit2编辑框中的内容被清除;编辑框中的内容被清除;f单击单击transferedit1编辑框的内容复制到编辑框的内容复制到edit2的编辑框中去的编辑框中去f单击单击undo取消上一次操作取消上一次操作f单击单击exit退出程序的运行退出程序的运行图图11-1 应用程序的窗口布局应用程序的窗口布局2021-11-1216f在在editboxeditbox的工作区中选择的工作区中选择resource viewresource viewf在名为在名为idd_editbox_dialogidd_editbox_dialog的对话框作为应的对话框作为应用程序的主窗口中

14、进行用程序的主窗口中进行界面设计界面设计生成了工程文件和生成了工程文件和工程工作区文件后工程工作区文件后在在editboxeditbox的工作区的工作区中选择中选择resourceviewresourceview2021-11-1218控件工具窗控件工具窗提供了提供了vcvc中中所有可建立所有可建立的控件类型的控件类型把鼠标停在把鼠标停在编辑框控件编辑框控件上,即可显上,即可显示该控件的示该控件的类型。类型。直接在可视化编辑的直接在可视化编辑的idd_editbox_dialogidd_editbox_dialog对话框对话框, , 利用控件工利用控件工具窗实现可视化操作具窗实现可视化操作编辑

15、框控件布置对话框中编辑框控件布置对话框中如编辑框。如编辑框。对对 象象i id dc ca ap pt ti io on n编编辑辑框框i id dc c_ _e ed di it t1 1无无编编辑辑框框i id dc c_ _e ed di it t2 2无无命命令令按按钮钮i id dc c_ _s sh ho ow w1 1_ _b bu ut tt to on ns sh ho ow wl l命命令令按按钮钮i id dc c_ _c cl le ea ar r1 1_ _b bu ut tt to on nc cl le ea ar rl l命命令令按按钮钮i id dc c_ _

16、s sh ho ow w2 2_ _b bu ut tt to on ns sh ho ow w2 2命命令令按按钮钮i id dc c_ _c cl le ea ar r2 2_ _b bu ut tt to on nc cl le ea ar r2 2命命令令按按钮钮i id dc c_ _t tr ra an ns sf fe er r_ _b bu ut tt to on nt tr ra an ns sf fe er r命命令令按按钮钮i id dc c_ _e ex xi it t_ _b bu ut tt to on n& &e ex xi it t命命令令按按钮

17、钮i id dc c_ _u un nd do o_ _b bu ut tt to on n& &u un nd do of将鼠标移到将鼠标移到edit1edit1编辑框上;编辑框上;f单击鼠标右键,并在快捷菜单击鼠标右键,并在快捷菜单中选择单中选择propertiesproperties命令;命令;f在窗口中输入控件的在窗口中输入控件的idid标识标识值值idc_edit1idc_edit1;f用同样的方法设置其它各个用同样的方法设置其它各个对象的属性。对象的属性。3.给界面对象连接变量给界面对象连接变量f在编辑框在编辑框edit1中,单击鼠标中,单击鼠标右右键,在弹出的快捷

18、菜单中,键,在弹出的快捷菜单中,选择选择classwizard;f选择选择member variables;f单击单击idc_edit1;(a)选择选择member variables选项卡选项卡(b)单击单击control ids列表列表框中框中idc_edit1项,项,使之高亮化使之高亮化(c) 单击单击add variable按钮,显示按钮,显示addmembervariable窗口窗口f单击单击add variable按钮,显示按钮,显示addmembervariable窗口;窗口;f成员变量名设置为成员变量名设置为m_edit1;f类别设置为类别设置为control;f变量类型设置为

19、变量类型设置为cedit。注意:注意:只有将只有将m_edit1设为设为cedit 类型,才能调用该类的类型,才能调用该类的copy () , paste () 等成员函数,实现本应用程序的操作。等成员函数,实现本应用程序的操作。(d)置置member variables name为为m_edit1(f)置置 variable type为为cedit1(e)置置categroy 为为controlf用同样的方法给编辑框用同样的方法给编辑框edit2等其它对象连接各自的变量等其它对象连接各自的变量;f最终,最终,classwizard窗口将变为下图所示。窗口将变为下图所示。水平及垂水平及垂直滚动

20、条直滚动条4 .修改编辑框的特性修改编辑框的特性f在编辑框在编辑框edit1edit1中,单击鼠标中,单击鼠标右右键;键;f在快捷菜单中,选在快捷菜单中,选propertiesproperties命令;命令;f选选styles选项卡,进行设置,修改选项卡,进行设置,修改其的特性其的特性。f用同样方法修改用同样方法修改edit2edit2的特性。的特性。多行多行编辑编辑允许回车键,允许回车键,可实现多行文可实现多行文本输入本输入5 . 给界面对象连接函数添加代码给界面对象连接函数添加代码f在按钮在按钮showl上,单击鼠标上,单击鼠标右右键,在弹出的快捷菜单中,选键,在弹出的快捷菜单中,选择择c

21、lasswizard;f选择选择message map;f单击单击idc_show1_button;f单击单击bn_clicked(a)选择选择member map选项卡选项卡(b)单击单击object ids列表框中列表框中idc_show1_button项,项,(d) 单击单击add function按钮,显示按钮,显示addmemberfunction窗口窗口(c)单击单击message列表框列表框中中bn_clicked项,项,f单击单击add function按钮,按钮,弹出弹出add member function窗口窗口f接受接受add member functionadd me

22、mber function建议的函数名建议的函数名f增加了成员函数增加了成员函数onshow1button()onshow1button();f单击单击edit code按钮按钮, 显示代码文件,进行添加代码。显示代码文件,进行添加代码。(e)接受接受add member add member functionfunction建议的函数建议的函数名名onshow1button()onshow1button()(b) 增加了成员函数增加了成员函数onshow1button()(d) 单击单击edit code, 显示代码文件,显示代码文件,添加代码添加代码void ceditboxdlg:ons

23、how1button()m_edit1.setsel(0,-1); /选中编辑框选中编辑框idc_edit1中的全部内容中的全部内容m_edit1.replacesel(this is the first editbox.);/替换内容替换内容请注意:请注意:程序中程序中setsel()和和 replacesel()都是都是cedit类中的成员函数,类中的成员函数,m_edit1是属于是属于cedit类的对象,可以调用之。类的对象,可以调用之。(1) (1) 给给showlshowl按钮连接代码按钮连接代码(2) (2) 给给clear1clear1按钮连接代码按钮连接代码void cedit

24、boxdlg:onclear1button() m_edit1.setsel(0,-1);/选中编辑框选中编辑框idc_edit1中的全部内容中的全部内容m_edit1.replacesel();/用空字符串代替所选文本,即删除之用空字符串代替所选文本,即删除之(3)(3)给给show2show2和和clear2clear2按钮连接代码按钮连接代码void ceditboxdlg:onshow2button() m_edit2.setsel(0,-1);/选中编辑框选中编辑框idc_edit2中的全部内容。中的全部内容。m_edit2.replacesel(this is the second

25、 editbox.); /替换内容替换内容void ceditboxdlg:onclear2button() m_edit2.setsel(0,-1);/选中编辑框选中编辑框idc_edit2中的全部内容。中的全部内容。 m_edit2.replacesel();/用空字符串代替所选文本,即删除之用空字符串代替所选文本,即删除之(4)(4)给按钮给按钮idc_transfer_buttonidc_transfer_button连接代码连接代码void ceditboxdlg:oncopybutton() m_edit1.setsel(0,-1);m_edit1.copy();/将将m_edit

26、l编辑框中所选的内容拷贝到剪贴板上编辑框中所选的内容拷贝到剪贴板上m_edit2.setsel(0,-1);m_edit2.replacesel();m_edit2.paste();/将剪贴板中的内容粘贴到将剪贴板中的内容粘贴到m_edit2编辑框中编辑框中29(5) (5) 给给 undoundo按钮连接代码按钮连接代码void ceditboxdlg:onundobutton() m_edit1.undo();/ 取消编辑框中上一次操作取消编辑框中上一次操作m_edit2.undo();(6) (6) 给给exitexit按钮连接代码按钮连接代码void ceditboxdlg:onexi

27、tbutton() onok();请注意:请注意:本应用程序的可视化编程到此已完成,本应用程序的可视化编程到此已完成,编译连接后此应用程序便可执行编译连接后此应用程序便可执行。2021-11-1230【11-811-8】编写一个程序,能够输入学生的信息编写一个程序,能够输入学生的信息,包括:,包括:“学号学号”、“姓名姓名”、“性别性别”、“年龄年龄”和所在的系,并能根据学生的和所在的系,并能根据学生的“学学号号”、“姓名姓名”和系别来进行检索。当检索和系别来进行检索。当检索到的信息超过一个时,能够依次显示。到的信息超过一个时,能够依次显示。2021-11-1231f界面由界面由”组合框、静态

28、文本框和编辑框等组组合框、静态文本框和编辑框等组成成2021-11-1232f单击工具窗单击工具窗“组合框组合框”按钮后,在对话按钮后,在对话框的左上角按下鼠标左键并拖动鼠标画框的左上角按下鼠标左键并拖动鼠标画出一个大小合适的组合框,出一个大小合适的组合框,f在在组合框组合框上单击鼠标上单击鼠标右右键,在弹出的快键,在弹出的快捷菜单中选择捷菜单中选择propertiesproperties菜单项,然后菜单项,然后在弹出的在弹出的group box propertiesgroup box properties对话框对话框中的输入中的输入idid值和值和captioncaption属性属性2021

29、-11-1233f单击单击“静态文本静态文本”按钮,在按钮,在“学生信息学生信息”组合框左上角画静组合框左上角画静态文本框;态文本框;f静态文本框上单击右键,选择静态文本框上单击右键,选择propertiesproperties菜单项;菜单项;f选选captioncaption属性编辑框,输入属性编辑框,输入“学号学号”。f单击单击“编辑框编辑框”按钮,在按钮,在“学生信息学生信息”组合框的右上角画编组合框的右上角画编辑框;辑框;f编辑框上单击右键,选择编辑框上单击右键,选择propertiesproperties菜单项;菜单项;f在弹出的在弹出的edit propertiesedit pro

30、perties对话框中设置编辑框的属性对话框中设置编辑框的属性。2021-11-1234f同样,在已建立的各个控件上单击鼠标右键,选择同样,在已建立的各个控件上单击鼠标右键,选择propertirespropertires选项,按照从上到下的顺序设置各编辑选项,按照从上到下的顺序设置各编辑框对象的属性,如表框对象的属性,如表11-1111-11所示。最后两列是控件连所示。最后两列是控件连接的变量。接的变量。表表 11-11 11-11 【11-811-8】中编辑框及组合框对象的变量及其类型】中编辑框及组合框对象的变量及其类型对象对象ididcaptioncaption变量变量类型类型编辑框编辑

31、框idc_edit_stucodeidc_edit_stucodem_cscodem_cscodecstringcstring编辑框编辑框idc_edit_nameidc_edit_namem_csnamem_csnamecstringcstring编辑框编辑框idc_edit_sexidc_edit_sexm_cssexm_cssexcstringcstring编辑框编辑框idc_edit_ageidc_edit_agem_csagem_csagecstringcstring编辑框编辑框idc_edit_deptidc_edit_deptm_csdeptm_csdeptcstringcstr

32、ing组合框组合框idc_staticidc_static学生信息学生信息编辑框编辑框idc_edit_searchcodeidc_edit_searchcodem_cssearchcodem_cssearchcodecstringcstring编辑框编辑框idc_edit_searchnameidc_edit_searchnamem_cssearchnamem_cssearchnamecstringcstring编辑框编辑框idc_edit_searchdeptidc_edit_searchdeptm_cssearchdeptm_cssearchdeptcstringcstring组合框组合

33、框idc_staticidc_static检索检索2021-11-1235f删除对话框中的删除对话框中的cancelcancel按钮和按钮和okok按钮。按钮。f单击工具栏单击工具栏 “ “按钮按钮”按钮,在窗口的右下角画出一个按按钮,在窗口的右下角画出一个按钮,钮,f在按钮上单击右键,在弹出的菜单中选择在按钮上单击右键,在弹出的菜单中选择propertiesproperties项,项,f弹出了一个弹出了一个push button propertiespush button properties对话框,输入对话框,输入idid和和captioncaption属性属性f依次可以绘制其他的下压式按

34、钮。属性如表依次可以绘制其他的下压式按钮。属性如表11-1211-12所示所示表表 1 11 1- -1 12 2 【 1 11 1- -8 8】 中中 按按 钮钮 对对象象的的 属属 性性 值值对对 象象i id dc ca ap pt ti io on n下下 压压 式式 按按 钮钮i id dc c_ _b bt tn n_ _i in np pu ut t输输 入入 信信 息息下下 压压 式式 按按 钮钮i id dc c_ _b bt tn n_ _s se ea ar rc ch h检检 索索下下 压压 式式 按按 钮钮i id dc c_ _b bt tn n_ _c co on

35、 nt ti in nu ue e下下 一一 条条 信信 息息下下 压压 式式 按按 钮钮i id do ok k退退 出出2021-11-1236添加变量界面添加变量界面2021-11-1237在文件在文件11-811-8dlgdlg.h.h中的对话框类中的对话框类cmy11-8dlgcmy11-8dlg定义前,加入记定义前,加入记录学生信息的结构体定义:录学生信息的结构体定义:structstruct student student cstring cscodecstring cscode; ;/学号学号cstring csnamecstring csname; ;/姓名姓名cstring

36、 cssexcstring cssex; ;/性别性别cstring csagecstring csage; ;/年龄年龄cstring csdeptcstring csdept; ;/系别系别;2021-11-1238在窗口中打开在窗口中打开classviewclassview窗口,在对窗口,在对话框类话框类cmy11-8dlgcmy11-8dlg上单击鼠标右键,上单击鼠标右键,在弹出的菜单中选择在弹出的菜单中选择add member add member variablesvariables选项选项( (如右图如右图) ),在弹出的,在弹出的add mmemberadd mmember v

37、ariables variables对话框中的对话框中的variablevariable编辑框中输入编辑框中输入studentstudent,在,在variable namevariable name编辑框中输入编辑框中输入structstudentstructstudent1010,这样就定义了,这样就定义了一个能记录一个能记录1010个学生信息的结构数组个学生信息的结构数组。然后采用此种办法加入变量:。然后采用此种办法加入变量:int int nstudentnumnstudentnum,int naccordnumint naccordnum,int int naccorditemnac

38、corditem1010。分别用来记录以。分别用来记录以输入学生的数目,检索时符合条件的输入学生的数目,检索时符合条件的学生的数目,符合检索条件的学生在学生的数目,符合检索条件的学生在structstudentstructstudent1010中的位置。中的位置。2021-11-1239void cmy11_8dlg:onbtninputvoid cmy11_8dlg:onbtninput() () updatedataupdatedata(true);(true);/从窗口编辑框中读入数据从窗口编辑框中读入数据structstudentnstudentnum.cscode = m_cscod

39、estructstudentnstudentnum.cscode = m_cscode; ;/赋值给学生结构体赋值给学生结构体structstudentnstudentnum.csname = m_csname;structstudentnstudentnum.csname = m_csname;structstudentnstudentnum.cssex = m_cssex;structstudentnstudentnum.cssex = m_cssex;structstudentnstudentnum.csage = m_csage;structstudentnstudentnum.csa

40、ge = m_csage;structstudentnstudentnum.csdept = m_csdept;structstudentnstudentnum.csdept = m_csdept;nstudentnumnstudentnum+;+; 定义函数定义函数updatedataupdatedata(true)(true)将窗口中编辑框中信息存储到与编将窗口中编辑框中信息存储到与编辑框连接的辑框连接的cstringcstring型变量中去。然后将这些型变量中去。然后将这些cstringcstring型变量保存到型变量保存到structstudentstructstudent数组中。然后

41、变量数组中。然后变量nstudentnumnstudentnum自增。自增。2021-11-1240void cmy11_8dlg:onbtnsearchvoid cmy11_8dlg:onbtnsearch() () bool baccordcodebool baccordcode = false; / = false; /设置学号是否符合的变量设置学号是否符合的变量bool baccordnamebool baccordname = false; / = false; /设置姓名是否符合的变量设置姓名是否符合的变量bool baccorddeptbool baccorddept = false; / = false; /设置所在系名称是否符合

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论