VC基础控件案例图详解_第1页
VC基础控件案例图详解_第2页
VC基础控件案例图详解_第3页
VC基础控件案例图详解_第4页
VC基础控件案例图详解_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、一.简单mfc应用程序开发。例1.编写如下图的程序,若单击“复制”按钮,则把上面的编辑框中的内容复制到下面的 编辑框中;若单击“结束”按钮,则退出程序的运行。(1)工程创建 选择“文件|新建”命令; 在“工程”选项卡中,选定amfc app wizard (exe),输入工程名称test,单击“确定” 按钮;选定“d基本对话框”即创建基于对话框的应用程序,单击“完成”按钮。您要创建的应用程序类型是:单文档固多重文档im)a基本对话延側p文档/查看体系结构支持凹您的资源使用的语言是:| 中文中国happwzchs.dll)3<上一步 下一歩 >完成 i 取消(2)放置控件,先删除原有

2、的控件,然后放置本例需要的控件,本例共涉及4个控件:2 个编辑框和2个命令按钮。编辑框主要用来输入数据,也可以用来显示数据;命令按钮用来 执行有关操作。口回冈testbuttonl15lj ibut toxi2尿 test _ kicrosoft visual c卄匚文件d)编箱2f« 0?)抵入工程组建(b)布局d)工且宙口帮肋qpj包 a r i3皂亘|口固寺 辘|d| »|ctestdigjj(aii class members)jj| ctestdigz_| 耳慟基 ! 型s test.rc 一 idd testdialog (dialog)-test resour

3、ces * _| dialog* lj icon* lj string table lj versioncm必露c,cl3ssruso 昌filrvi.2s1n组建才调试' 在文件1中查找在文件2中查找、结巣' sql debu龍皿 /p: n0, 0!=: 320 x 1 76(3) 设置控件的属性,控件添加后就要设置其有关的属性。上编辑框的属性设置:选定“multiline"复选框,编辑框中可以输入多行文本;选定“vertical scroll和auto vscroll,编辑框将有垂直滚动条;选定"want return”。edit ji性占缪常规样式扩

4、展样式i排列文本凶:i靠左3多行(mj厂数字厂水平滚动0厂密码回v边框回自动水平滚动(b垂直滚动閨v 自动垂直滚动圆厂没有隐藏选择(d厂大写(uj厂oeu转换(0厂小写(u需要返回回厂只读回下编辑框的属性设置同上编辑框,但可不选定“want return”。(4)连接变量,为控件连接变量就是为控件起一个名字。每一个控件都是一个对彖,调 用mfc类库中的函数都是通过对象来实现的。编辑框属于cedit类,一个具体的编辑框就是 一个cedit类的対象,如上idc_edit1和idc_edit2<>这些对象必须有名称才能対它们进行操 作,所以耍给每一个对彖连接一个变量,作为对象的名称。这个

5、变量将成为类中的一个数据 成员。现在为idc_edit1连接一个变量在idc_edit1编辑框中右击鼠标出现快捷菜单选择“建立类向导”,如下图所示。在上图中选择“创建类向导”后,弹出如下图所示的mfc classwizard对话框,在“member variables中,选定 “idc edit1”,再选择"add variable” 按钮。冈fc classyizardmessage maps member variables automation activex events class info确定取消 出现下图所示的add member variable对话框中输入以卜的数据

6、:member variable name(成员变暈名):m_el; category(类别):control;variable type(类型):cedit。add hember variableokmember variable name:category:cancelcontrolvariable type: ,ceditdescription: map to cedit member用同样的方法为idc edit2连接一个变量m e2,结果如下图所示。区ifc classvizardmessage maps member variables automation | activex e

7、vents | class info ,description: map to cedit member确定取消 |(5)添加并且编写消息处理函数,在建立了对话框(用户操作界面)、设置控件属性 和连接变量后,就要考虑为哪些控件编写什么样的消息处理函数了。本例要求单击“复制”按钮后,编辑框中的内容复制到下面的编辑框中。也就是说,在 程序运行时,在“复制”按钮上发生单击事件后,windows向对话框发出了一个bn_clicked 消息,ctestdig类应有一个处理该消息的函数。添加和编写这个消息处理函数的过程是:双击“复选”按钮,弹出如下图所示的“add member function”对话框,

8、输入函数 名(缺省函数名为0nbuttonl),单击“确定”按钮后,添加了一个空函数。另一个方法是在“mfc classwizard"对话框“message maps”选项卡中,选定idc_button1 和bn clicked消息,如图所示,然后单击4<add function”按钮即可。冈fc class¥izard再单击edit code按钮,出现如下消息处理函数。为消息处理函数 void ctestdig:onbuttonl()和 void ctestdig:onbutton2()分别添加代码 如下图所示。自 testdlg.cpp 拿uoid ctestdl

9、g: :0nbutton1()/ todo: add your n_e1.setsel(0,-1); m_e1.copy(); r)ze2.setsel(0,-1); n_e2.paste();control notification handler code here选定编辑框l"中的所有内査把编输骨一"中选定的内容曼制到剪贴板选定编辑框中的听有内容将剪贴板中內容黏贴到编辑框1己2中,替换原有所有选定的内容uoid ctestdlg: :0nbutton2()/ todo: add your control notification handler code here o

10、nok();退岀对话框程序|二静态文本框、命令按钮和编辑框的使用静态文本框,是最简单的控件,它主要用来显示文本信息,不能接受用户输入,一般不需要 连接变量,也不需要处理消息。命令按钮,是最常见的、应用最广泛的一种控件。在程序执行期间,若单击某个命令按钮, 则执行相应的消息处理函数。命令按钮的主要属性是标题属性,该属性用来设置命令按钮上 显示的文本。命令按钮一般不需要连接变量。命令按钮能处理bn_clicked消息。编辑框,是一个文本编辑区域,用户可以在该区域输入、编辑和显示正文内容。由于编辑框 内置了一定的编辑功能,如剪切、复制、粘贴、撤销等功能,一般不需要对它进行编程。(1)属性设置,编辑框

11、的重要属性(样式style选项卡中)设置:multiline,定义该编辑框为多行文本框;number,限定输入的字符只能是数字字符;boder 为控件创建边界;read-only,编辑框成为只读的,禁止用户编辑修改。edit屋性冈占昭常规re.j扩展样式i排列文本凶:厂水平滚动0厂密码回圧边框回1靠左3疋自动水平滚动(d厂没有隐藏选择(u厂大写(uj臣多行(mjv垂直滚动閨厂oem转换(q厂小写uj厂数字自动垂直滚动固“需要返回回厂只读(s)(2)成员函数,编辑框常用的成员函数如下表所示。成员函数功能应用示例setsel(n,m)选定编辑框中从第n个字符到第m个字符的内 容。setsel(o,

12、-l)的作用是选定所冇的内容m_e.setsel(o,-l);copy()将编辑框中当前选定的内容复制到剪切板m e.copy();cut()将编辑框屮当前选定的内容剪切到剪切板m e.cut();clear()删除编辑框中当前选定的内容m e.clear();paste()把剪贴板中内容粘贴到编辑框中光标所在位置m e.paste();getline(n,ch)将多行编辑框中第n行的内容复制到ch中,ch 般为字符数组char ch80; m e.getline(o,ch);replacesel(ch)将ch中内容替换编辑框中选定的内容char ch80="abcd" m

13、 e.replacesel(ch);undo()撤销对编辑框的最后一次操作m e.undo();由于cedit是从cwnd类直接派生来的,所以编辑框可以使用cwnd类的成员函数ocwnd 类的重要成员函数有: 获取编辑框屮内容:getwindowtextfcstring &rstring) const;将编辑框屮内容复制到 cstring 类对象 rstring 中。例如,将编辑框m,中内容复制到cstring类对象ch中:cstring ch;m_e.getwindowtext(ch);例如,将编辑框m_e中内容复制到字符数组ch中:char ch80;m_e.getwindowte

14、xt(ch,80); 设置编辑框中内容:void setwindowtext(lpctstr ipszstring);将 ipszstring 中内容替换 编辑框中原有内容,ipszstring是字符数组或字符串指针。例如:设置编辑框屮的内容为“abcdefg”:charch20=,abcdefgw;m_e.setwindowtext(ch);连接变量编辑框在连接变量时,除了耍指定变量名之外,还要确定变量类别。变量类别有两个可 选择:control是指该变量作控件使用,对应的变量类型只能是cedit,可以使用该控件类的 成员函数;value,是指该变量作c/c+屮普通的变量使用,对应的变量类型

15、有cstring> int> double等。如下图所示。注意:如果一个编辑框连接了一个value类别的变量,则该变量就表示这个编辑框,编 辑框中显示的内容就是变量的值。但是,改变了编辑框的内容并不会自动更新対应的变量的 值,同样改变了变量的值也不会自动刷新编辑框的内容。若要保持一致,需要使用 updatedata()函数更新:若编辑框的内容改变了,则应使用语句updatedatactrue);更新对应 的变量的值;若变量的值改变了,贝0应使用语句updatedata(false);刷新编辑框的内容。例2,输入一元二次方程ax2+bx+c=o的系数a、b、c,计算并输出两个根x】、

16、如下图所示。说明:建立工程名为fc,对话框上有5个静态文本框、5个编辑框和2个命令按钮。为5 个编辑框连接的变量如下图,类型都是value,数据类型都是doubleo为了计算b2-4ac的平方根,需要使用sqrt()函数,因此在fcdig.cpp文件的开头添加文 件包含命了:#include "math.h"。“计算”和“结束”按钮的消息函数如下图所示。uoid cfcdlg:0nbutton1() “计算按钮的消息函数代码</ todo: add your control notification handler code here updatedata(true)

17、;double a=n_a;double b=n_b;double c=n_c;m_x1=(-b+sqrt(b*b-4*a*c)/(2*a);m_x2=(-b-sqrt(b*b-4*a*c)/(2*a);updatedata(false);uoid cfcdlg: :0nbutton2()结束按钮< / todo: add your control notification handler code here onok();例3,编写一个对输入的字符串进行转换的程序。转换规则为:将大写字母转换成小写; 将小写转换成大写;换行符和回车符不变;其余字符转换为“*”。要求每输入一个字符立即 进

18、行判断和转换。创 zfzh fgdjgld999sfslfjsafsljslf|fgdjgld*sfslfjsa£sljsl£程序运行界而如下图所示,其上仅放有2个编辑框,它们的属性如下表所示,连接的变 量分别是m el和m e2,都是control类别。控件属性属性值m elid缺省multiline选定vertical scroll选定auto vscroll选定want return选定m_e2id缺省multiline选定vertical scroll选定auto vscroll选定read only选定为了在每输入一个字符后立即进行判断和转换,编写了 “en_ch

19、ange”的消息函数, 如下图所示。zfzhdlg.cpp *3uoid czfzhdlg:0nchangeedit1()/ todo: if this is a richedit control, the control will n / send this notification unless you ouerride the cdialog:char s80;n_e1getwindowtext(s,80);for(int i=0;si?=,0,;i+) if(si>=,a, && si<=,z,) si=si + ,a,-,a,;else if(si>

20、=,a, && si<=z)| si=si + ,a,-,a,;else if(si=,n, | si=,r,) si=si;elsesi=,*i;m_e2.setwindowtext(s);-hu三. 框架、单选按钮和复选框框架、单选按钮和复选框都是对话框的常见控件,框架与静态文本框一样是cstring类 的对象,单选按钮和复选框与命令按钮都是cbutton类的对象。1 框架当对话框上控件较多时,可以使用框架将一组相关的控件框起来,达到标识一组控件的 作用。框架不需要连接变量,也不需要处理消息。框架的重要属性有:id,所有框架的缺省 id都是idc_static,不需要

21、重新设置;标题,该属性决定框架上的标题文本。2单选按钮,单选按钮必须成组出现,用户在一组单选按钮中最多只能选择一项。当 某一项被选定后,其他选项自动变成未选状态。窗体中放置一组单选按钮的方法:同一组按钮必须一个接一个地放进对话框中,中间 不能插入其他控件,并且一个组的第一个按钮要选中“group”属性,表示一组控件的开始。 打开mfc classwizard的member variables选项卡,川以发现一组中只有第一个按钮的id被 显示,这意味着只能对第一个按钮连接变量。单选按钮的重要属性:id,每个单选按钮都有一个缺省id,如idc_radio1,可以重新 设置;标题,该属性值就是单选按

22、钮右边显示的文本标题;group, 一组中第一按钮选中该 属性,表示它是一组的开始。单选按钮的消息函数:bn_clickedo单选按钮的重要成员函数:(1) 设定单选按钮选中状态,初始时,可使用window api函数checkradiobutton()设 定一组单选按钮中选中的按钮。形式:void checkradiobutton(int nidfirstbuttonjnt nidlastbutton, int nidcheckbutton);说明:nidfirstbutton是一组中第一个单选按钮的id; nidlastbutton,是一组中最后一个 单选按钮的id: nidcheckbu

23、tton为初始时设置为选中的那个单选按钮的id。(2) 判定单选按钮是否被选定形式:unit isdigbuttoncheckedfint nidbutton) const;说明:如果id为nidbutton的单选按钮被选中,则该函数的返回值为true,否则为false。例4,设计一个如下右图所示的程序。当单击“确定”按钮后,用afxmessagebox函数 显示有关信息,如左图所示。址单选按钮刘老根性别q男r女职称e教授r副教授r讲师确定界面设计:首先创建一个对话框程序(工程名称为dxan),然后放置控件,进行属性设置,将编辑框连接到value类cstring类型的m_e变量,其余控件不需要

24、连接变量。对其中idc_radio1、idc_radio2 (它们用第一个框架框上,第一个框架的标题属性修 改为“性别”,如下图group box属性设置对话框所示)的标题属性分别设置为“男”(如下 图radio button属性设置对话框)、“女”,将idc_radio1的group属性选定。对其中 idc_radio3、idc_radio4和idc_radio5 (它们用第二个框架框上,第二个框架的标题属性 修改为“职称”)的标题属性分别设置为“教授”、“副教授”和“讲师”,将idc.radio3的 group属性选定。group box 屋性radi o button 展性七昭常规样式i

25、扩展样式iid: idclradioi3标题q: f疋可见o 厂己禁用回v组 厂制表站回厂帮助id(h初始化设置:单选按钮的初始化工作在对话框的初始化函数中实现,初始化函数建立如 下图mfc classwizard屮,单选按钮的初始化代码见下图代码窗口中onlnitdialog成员函数的 红框区域中。fc classvizard)区imessage mapsproject:|dxanmember variables automation activex events class infoclass name:| |cdxandigc:mfcdxandxandig.h, c:mfcdxandxa

26、ndig.cppobject ids:cdxandibutton1edit1radio1radio2radio3 radiosmessages:wm_deleteitem;wmdestroywm_drawitemw 财 _helpinfowm hscrollwm initdialog|wm_keydownadd class. member functions: | v dodataexchangee3 onlnitdialogon_w财nitdialogw onpainton_wm_paintw onquerydraglcon on_wm_querydragiconw onsyscommand

27、 0 n_wm_s ys com man ddescription: sent to a dialog box before the dialog box is displayed确定& dxandlg. cpp 口回冈bool cdxandlg:oninitdialog()cdialog:oninitdialog();/ add '"about" nenu iten to system nenu./ idmaboutbox must be in the system command range. assert?(idm_ab0utb0x & 0xf

28、ff0) = idm_aboutbox); assert(idm_aboutbox < oxfooo);checkradiobutton(idc_radi01 ,idc_radi02,idc_radi01);需要追加的代码设置第一组单选按钮有idc_radi(fildc_radi(始选中按钮是idc.radio1 checkradiobutton(idc_radi03»idc_radi05,idc_radi03);/设置第二组单选扶钮有i dc_r ad 103,1 dc_r ad 104,1 dc_r ad 105初始选中按钮是idc_radi03cmenu* psysmen

29、u = getsystenmenu(false); if (psysmenu ?= null)| 'cstring straboutmenu; straboutmenu.loadstring(ids_aboutbox); if (tstraboutmenu.isempty()psysmenu->appendmenu(mf_separator);psysmenu->appendmenu(mfzstring, idm_ab0utb0xf straboutmenu);“确定”按钮的消息处理函数代码如下图所示:3 复选框复选框列出了可供选择的项,用户可根据需要选择其中的一项或多项,

30、各选项之间的状 态互不相关。重要属性:id,每个复选框都有一个缺省id,如idc_check1;标题,该属性值决定了 复选框右边显示的文本标题。连接变量,复选框通常被连接到value类別bool类型的变量。消息:复选框能处理bn_clicked 消息。例5,设计一个如图所示的程序,当单击“确定”按钮后,在右边的编辑框中显示有关 信息。界面设计:首先,创建一个基于对话框的界面(工程名称fxk)0然后放置控件(原有控件删除,再重新放置两个编辑框、一个框架、三个复选框和一个 按钮)。接着,进行属性设计,2个编辑框属性基本不变,右下的编辑框的只读属性选中;复选 框的标题属性分别设置为“旅游”(如下图所

31、示)、“运动”、“咅乐”。笫四步,对编辑框和复选框分別建立连接变量如下表所示。控件变量名变量类别变量类型编辑框1m elvaluecstri ng编辑框2m e2valuecstri ng复选框1m clvaluebool复选框2m c2valuebool复选框3m c3valuebool最后,输入“确定”按钮的消息处理函数,如下图所示。1 fxkdlg. cpp »回区|uoid cfxkdlg: :0nbutton1 () "确定"消息处理函数/ todo: add your control notification handler code here upd

32、atedata(true);cstring s;s=m_e1;s=s*"爱好:;if5_c" s=s+"旅游蔦if(n_c2) s=s+bii动"if(<c3) s=s*"音乐蔦> <llult四. 列表框和组合框列表框是clistbox类的对象,组合框是ccombobox类的对象。1 列表框,它通过显示多个选项,供用户选择,达到与用户对话的目的。如果有较多 的选项而不能一次全部显示时,系统会自动加上滚动条。列表框最主要的特点是只能进行选 择,而不能直接修改其中的选项。列边框的重要属性: selection(选择,如下图),属

33、性值有:single-单个选择;multiple多个选择,但是忽略 ctrl和alt键;extended-允许使用ctrl和alt键的多项选择;none-禁止选择。list box厘性冈厂需要犍输入凶虫缪常规样式扩展样式i 选择©:v边框回 厂水平滚动0展 个扩疋分类(s)疋通知厂不刷新屏幕(b)厂禁止不滚动(d)疋没有完整高度凹r多列(m) 厂使用制表站(u) sort (分类),当该属性被选定后,列边框中选项按字母顺序排列。列边框的成员函数(假定某窗体中添加的列边框已经建立了 contrlo类别的clistbox类 型的连接变量m): 添加项目:格式:int addstring

34、(lpctstr ipszltem);例如:语句m_l.addstring("万里);把“万里”这项添加到列边框m_l中。 删除项目:格式:int deletestring(unit nlndex);说明:nlndex表示被删除项目在列边 框屮位置,对于第一个选项,nlndex应为0。例如:语句m_i.deletestring(4);删除列表框中第五个项冃。 获取当前选定的项目的序号:格a: int getcursel() const;例如,语句int i二m_i.getcursel();将使i获得m列表框中当前选定的项目的序号。 获取列表框中指定的项目:格式 1: int gett

35、ext(int nlndex,lptstr ipszbuffer) const; 格式 2: void gettext(int nlndex,cstrin& rstring) const;说明:将列表框中每nlndex个选项的文本送到ipszbuffer或rstring中。例如:char sl20; cstring s2;m_i.gettext(4,sl);m_i.gettext(4zs2);这两条语句将第5项内容分别送给了 si和s2例6.编写一个能对列表框进行项目添加、修改和删除操作的应用程序,如下图所示。“添 加”按钮的功能是将文本框屮内容添加到列表框,“删除”按钮的功能是删除列

36、表框屮选定 的选项。如果要修改列表框,则首先选定选项,然后单击“修改”按钮,所选的选项显示在 文本框中,当在文本框中修改完成之后再单击“修改确定”按钮更新列表框。界而设计:创建一个基于对话框的界面(工程名称为lbk),在其上添加1个列表框、1 个编辑框和五个按钮(设置五个按钮的标题属性分别是“添加”、“删除”、“修改”、“确定修 改”、“退出”),如下图所示。列表框的连接变量是control类的clistbox类型的m_l,编辑 框的连接变量是value类的cstring类型的m_ec窗体的初始化消息函数中实现对列表框内容的初始添加:使用其addstring函数添加。对窗体的初始化设置旨 lb

37、kdlg.cpp *bool clbkdlg:oninitdialog()</ todo: add extra initialization here m_l.addstring诺丁汉大学"); m_l addstzringc宁枝大学“);m_l addst厂ingc逝江大半");im.addstringc1波工程学院");return true;/ return true unless you set the focus tc各按钮消息处理两数如下图所示。b lbkdlg.cpp »口回冈void clbkdlg:0nbutton1() ”添加按

38、钮消息处理函数/ todo: add your control notification handler updatedata(true);m_l.addstring(m_e);me=;_updatedata(false);codeherevoid clbkdlg:0nbutton2()"删除按钮消息处理函数/ todo: add your control notification handler int n=n_lgetcursel();m_l.deletestring(n);codehereuoid clbkdlg:0nbutton3()"修改按钮消息处理函数/ tod

39、o: add your control notification handler cstring s;int n=n_lgetcursel();m_l.gettext(n,s);n_e=s;updatedata(false);codeherelblbkdlg. cpp »回区|moid clbkdlg:onbutton4() “确定修改按钮消息处理函数</ todo: add your control notification handler code here updatedata(true);int n=n_l.getcursel();m_l.deletestring(n)

40、;n_l.insertstring(n,m_e); 向列表框的第n个位置插入编辑框中內容 n_e=iiii;updatedata(false);uoid clbkdlg:0nbutton5() /厂确定“按钮消息处理函数</ todo: add your control notification handler code here onok();2 组合框组合框是组合了编辑框和列表框的特性而形成的控件。组合框在列表框中列出可供用户 选择的项,当用户选定了某项后,该项内容自动装入编辑框中。组合框有三种样式:简单组 合框(simple)、下移式组合框(dropdown)s下拉式列表框(dro

41、plist),如下图所示。属性设置:市于组合框包含了编辑框和列表框因此它有许多属性,大多数编辑框和列表 框的属性可适用于组合框,下面的两个属性是组合框独有的。类型(type)共有简单、下移和下拉列表,默认值是下移。键入列表框项(enter listbox items),在列表框的属性窗口 “data”选项卡中有一个键入 式列表框项,这里可以在设计阶段完成对组合框的初始输入。注意,每当一项输入完成后按 ctrl+enter键才能输入下一项。coabo box be性®卡缪常规st.j样式i扩展样式i学大 汉t?诺矣蹇波i 丁7j-1 丁特别提醒:运行时,组合框的高度如果没有调节好 是无

42、法显示出下拉内容的,调节组 合框的高度方法是点击组合框下拉的那个箭头然后在调节高度就是有效的了。常用的成员函数:编辑框和列表框的成员函数儿乎都可以用于组合框,但是列表框的成员函数gettexto 在组合框屮变成getlbtext()o格式 1: int getlbtext(int nlndex,lptstr ipsztext) const;格式 2: void getlbtextfint nindex,cstring& rstring)const;说明:使用getlbtext()函数将组合框中的笫nlndex项的文本送入lpsztext(字符数组)或rstring (字符串变量)。组合

43、框触发的消息:cbn_selectchange:组合框的列表框中选项改变吋触发。cbn_editchange:组合框的编辑框中文本改变时触发。例7,设计一个如图所示的对话框。如果单击“确定”按钮,则用消息框显示选择的信 息,如下图所示。说明,创建一个基于对话框的界面,然后放置控件:两个静态文本、1个组合框、1个 编辑框和1个按钮。组合框的选项在设计阶段直接输入。组合框的连接变量是value类的 cstring类型的m_c,编辑框的连接变量是value类的cstring类型的m_e。确定按钮的消息处理函数如下图所示。旦 zhkdlg. cpp口叵i回void czhkdlg:0nbutton1(

44、)f"确定按钮消息处理函数w/ todo: add your control notification handler code iupdatedata(true); cstring s;s"品牌七 s=s+m_c;数量蔦s=s+m_e; messagebox(s);_jnjj五. 滚动条滚动条是cscrollbar类的对象,用来协助显示数据或确定位置,也可以用来作为数据输 入的工具,滚动条有水平和垂直两种。例8建立一个水平滚动条,最小值为0,最大值为100,单击滚动条两端箭头时滑块移 动的增量值为2,单击滚动条中空白处(滑块与两端箭头之间的区域)时滑块移动的增量值 为10

45、。界面上还有一个只读的编辑框,显示滑块当前位置所代表的值。说明:首先,创建工程名为gdt的界面,然后放置1个水平滚动条和一个编辑框(只 读属性选定),建立水平滚动条的control类的cscrollbar类型的连接变量m_s,建立编辑框 的value类的int类型的连接变量m_e。接着,初始化设置。滚动条的初始化就是设置最小值、最大值和初始时滑块所代表的值。 滚动条初始化在对话框的初始化函数(如下图所示)屮完成,涉及两个成员函数: 设置最大值和最小值格式:void setscrollrange(int nminposjnt nmaxpos,bool bredraw=true)说明:nminpo

46、s表示最小值,nmaxpos表示最大值。当bredraw=true时重画滚动条。 设置滑块的位置格式:int setscrollpos(int npos,bool bredraw=true)说明:npos表示滑块的位置。当bredraw=true时重i田i滚动条。1 gdtdlg.cpp口回冈bool cgdtdlg:oninitdialog() 窗本初始化v肖息函数彎最大值询,最小值。/ todo: add extra initialization here n_s .setscrollrange( 0,100); /设置 nzs.setscrollpos(so); "初始摺 n_

47、e=50;updatedata(false);return true; / return true unless you set the focus to a conml然后,编写消息处理函数。当用户在滚动条上进行操作时,滚动条接收不到任何消息。但是对话框却能接收到 wm.hscroll (水平滚动条)或wm_vscroll(ffi直滚动条)消息,即程序对滚动条的操作只能在 onhscroll ()或 0 nvscrollf)中编写代码。滚动条处理 wm_hscroll消息的函数为onhscroll()函数,如下图所示。口叵®uoid cgdtdlg:onhscroll(uint n

48、sbcode,uint npos, cscrollbar* pscrollbar)/ todo: add your message handlercode here and/or call default旨 gdtdlg.cpppscrollbar);cdialog:onhscroll(nsbcode9 npos,英屮:pscrollbar是指向用户正在进行操作的滚动条;npos表示滑块当前的位置;nsbcode 是指示用户正在进行的操作,其取值及其意义如下表所示。用户操作触发的消息函数拖动滑块sb thumbtrack单击向上(左)的箭头sb lineleft/sb lineup单击向下(右)的箭头sb uneright/sb linedown单击向上(左)的箭头与滑动区块之间的区域s b pag e le ft/s b pag eup单击向下(右)的箭头与滑动区块z间的区域sb pageright/sb pagedown滑动条的wm_hscroll消息的处理函数onhscroll的代码如下图所示。1 gdtdlg. cpp *uoid cgdtdlg:onhscroll(uint nsbcode, uint npos, cscrollbar* pscrollbar) / todo: add your message handler code her

温馨提示

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

评论

0/150

提交评论