2022年VC++MFC控件知识点134_第1页
2022年VC++MFC控件知识点134_第2页
2022年VC++MFC控件知识点134_第3页
2022年VC++MFC控件知识点134_第4页
2022年VC++MFC控件知识点134_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、1 按钮控件1.1 如何使用按钮控件方法是双击编辑对话框按钮图标,之后就进入了这个按钮单击的处理函数,在这里 ,你可以添加按钮单击后要做的事是什么.1.2 如何让按钮显示图标样式首先进入resourceview 里,然后右击icon 选择插入,之后选择你要的图标,假设这个图标的 id 名为 idi_icon2 ,那么下一步,就是进入对话类中的onpaint()函数,并在else里面添加如下语句:m_quit.seticon(loadicon(afxgetresourcehandle(),makeintresource(idi_icon2);注: m_quit 为要显示图标按钮的关联类;还要说明

2、的是,必须把按钮属性样式里把图标的构给打上才行,要不然是无法显示图标的。13 如何让按钮显示文本信息先要在对话框添加一个ctooltipctrl类的对象,如:ctooltipctrl m_tooltip;然后在 oninitdialog 添加以下语句:m_tooltip.create(this);m_tooltip.addtool(&m_confirm,”文本信息 ” );/m_confirm为要显示文本按钮关联的类对象然后在类视图窗口中右击对话框类,在弹出的菜单中选择add virtual funtion,然后再双击pretranslatemessage;添加右边窗口中去,这样便增加

3、了一个方法,在此方法中添加以下语句m_tooltip.relayevent(pmsg); 既可;精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 1 页,共 15 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 1 页,共 15 页 - - - - - - - - -2.复选框控件2.1 如何使用复选框控件复选框控件是有一个x 的图标,比如是三个复选框吧,首先各为三个复选框关联一个控件类,比如是m_vip,m_manager,m_commoner; 那么调用 m_vip.

4、getcheck(); 返回的是一个整数,如果返回值等于bst_checked ;那么此类关联的复选框控件就被选中了。如果要获取此类关联控件的文本信息就用m_vip.getwindowtext(modal);其中 modal 是一个 cstring 类的对象,跟 edit 是差不多的,存储有信息。精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 2 页,共 15 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 2 页,共 15 页 - - - - - - - - -3.

5、进度条控件3.1 如何使用进度条控件先为控件关联一个类,如m_progress; 那么先要为进度条的控件设定一个范围,比如设定099999;就用 setrange32() 函数。如: m_progress.setrange32(0,99999);这样,当调用m_progress.setpos(50000);时,进度条就会显示在一半左右。要显示就是不停的调用。编辑显示,似乎要setwindowtext,updatedata不行。也好像只是静态控件才可以显示;精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 3 页,共 15 页 - - - - - - -

6、 - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 3 页,共 15 页 - - - - - - - - -4.编辑框控件4.1 编辑框数据的输出与获取编辑框数据的输出与获取有两种方法,第一种 ,为编辑框关联一个control 类型的类,假如是 m_outresult,那么要获取数据,就先定义一个cstring 类的对象,假如为m_data;那么m_outresult.getwindowtext(m_data); 此时, m_data 就存储有编辑框里的内容。输出就用setwindowtext 函数,如cstring m_data=” abcde

7、fg ” ;m_outresult.setwindowtext(m_data);或者把括号里的m_data 换成 “abcdefg”;第二种方法是直接为编辑框关联一个value的类型,有cstring,double,int 等等类型,假如为 cstring 类型,名也为outresult;此时如果要获取该编辑框信息就调用updatedata(false); 调用之后, outresult 就存储有编辑框里的信息了。如果要输出的话;比如要输出 ”abcdefg”;那么就是下面语句:outresult= ”abcdefg”;updatedata(true);这样就更新数据到编辑框里了,可以推断,如

8、果编辑框里只是int 类型,那么就选int;而 double 就是 double;42 如何进行换行输出右击编辑框,选择属性,然后在样式里把多行的勾给打上,这样,只要输出字符串里有rn,就可以了,也就是说,只要遇到这两具转义字符,就进行换行。43 如何响应编辑输入数字消息就是如果在编辑输入值,就会立即执行相应的函数,方法,是添加这个编辑控件id 的 onchange 消息函数编辑框字体和颜色的设置设置字体首先添加一个编辑控件,关为其关联一个对象如:m_content;然后在对话框定义一个类字体对象如: cfont m_editfont; 这样在对话框初始部分添加以下语句:m_editfont.

9、createfont(24,20,0,0,400,0,0,0,default_charset,out_default_precis,clip_default_precis,600,default_pitch,宋体 );m_content.setfont(&m_editfont);关于函数参数的意思,在vc+ 编译器里,输入参数的时候,会有提示的。好好研究一下;162 设置颜色添加一个对话框wm_ctlcolor消息处理函数,然后就在这个函数里添加以下语句:if(nctlcolor=ctlcolor_edit)pdc-settextcolor(rgb(255,0,0);就可以了,我想你应

10、该明白语句的意思;精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 4 页,共 15 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 4 页,共 15 页 - - - - - - - - -5图像控件51 如何使用图像控件先得插入一个位图文件,似乎只支持256 色及其以下的图片,方法是:切换到resourceview窗口右击 icon 选择插入再选择bitmap接着按引入。按了之后,就多出了个 bitmap文件,看一下你插入位图的id ,之后再到对话框中,右击图像框,选择

11、属性。在类型选项框里选择位图,再在下面那个图像选项框选择要显示位图的id ,就行了。52 如何动态加载位图先为图像控件关联一个类,图像控件属性对话框里的类型选择位图。注:由于默认是静态id 所以得改一个id 名才行,类名为m_bmp;之后在按钮单击事件加入以下语句:cfiledialog fldlg(true,null,null,ofn_hidereadonly|ofn_overwriteprompt,位图|*.bmp|);/ 文件对话框类对象if(fldlg.domodal()=idok)/显示文件对话框cstring szbmpname;szbmpname=fldlg.getpathnam

12、e();/ 获取选择路径名,如位图,文本。hbitmap holdbmp=m_bmp.setbitmap(hbitmap)loadimage(null,szbmpname,image_bitmap,0,0,lr_loadfromfile);/加载位图文件deleteobject(holdbmp);/ 释放位图文件资源精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 5 页,共 15 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 5 页,共 15 页 - - - - -

13、- - - -6 列表框控件61 如何使用列表框控件要往列表框控件添加内容有两个函数一个是addstring(); 另一个是insertstring(); 第一个函数只有一个参数,而第二个有两个。首先要为列表框控件关联一个control 类,这里我们取名为 m_datalist; 如果我要控件框显示内容为数学,语文,英语,那么就是m_datalist.addstring(“数学 ”);m_datalist.addstring(“语文 ”);m_datalist.addstring(“英语 ”);那么这时候从上到下的排列没有按照语句的先后进行排列,如果要想按照语句的先后顺序进行排列的话,则只要进

14、入控件的属性,选择样式,把分类的勾给去掉,就可以了。如果我想再加一个内容呢,并要排在第二位,要怎么做呢?那就得用第二个函数呢,比如我要加一个程序,则 m_datalist.insertstring(2,”程序 ”); 就可以了。那么要如何获得用户选择的内容呢,这里获取方法,跟组合框一样,用 index=getcursel(); 返回用户当前选择内容的索引,然后调用 m_listbox.gettext(index,cssubject);/获得索引的内容,第二个参数为cstring我们发现,上面的这种只可以单选。如果有多选要怎么做呢?又有两种方法。第一种,把m_datalist 改为 ccheck

15、listbox 类的对象。然后再在控件的属性对话框中把所有者绘制选择固定,把下面那个有字符串的勾给打上。而第二种就更简单了,只要把属性对话框的选择选上多个就行,这里要注意了,下面那个所有绘制要选no。但要如何获得哪些内容被选定呢?似乎列表不像复选框,可以为每一个内容关联一个类,所以,要想获取选择了哪此内容必须得知道有多少个内容,这里用getcount();函数就可以了,函数返回的是一个整型值。如:int listcount=m_datalist.getcount();for(i=0;ilistcount;i+)if(m_datalist.getcheck(i)=bst_checked)/被选中

16、m_datalist.gettext(i,content);/ 就获取内容; content 为一个 cstring 类型;以上获取方法好像只应用于cchecklistbox 的对象;精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 6 页,共 15 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 6 页,共 15 页 - - - - - - - - -7列表(视图)控件71 如何使用列表控件首先新建一个基于对话的程序,然后,在对话框里添加一个列表控件,并为控件关联一个类

17、,假设这里我们关联的类名为m_userlist; 既然是列表视图控件,那图片是从哪里来呢,从图像列表控件哪里获取,先把8。1 做好,再在oninitdialog后面加以下语句:m_userlist.setimagelist(&m_imagelist,lvsil_normal);m_userlist.insertitem(0, 小明 ,0);m_userlist.insertitem(1, 小强 ,1);m_userlist.insertitem(2, 小花 ,2);但要如何获得被获取的内容呢?用getselectionmark();如:int nsel=m_userlist.getse

18、lectionmark();/3个图标,估计返回值是02if(nsel!=-1)cstring szuser=m_userlist.getitemtext(nsel,0);/获取图标文本内容messagebox(szuser,你选择的用户是);7.2 如何给列表视图设置背景按照以上方法给控件关联一个对象;然后在一个对话框类后面为app 结束的类中的initinstance 方法中,最下面的那个#endif 中的下一行加入这个语句:afxoleinit();然后,在对话框初始化部分加以下语句:m_list.setbkimage(e:001.bmp,true,1,1);/假设列表视图控件的对象为m

19、_list;m_list.settextbkcolor(clr_none);setbkimage 函数中第一个参数是位图路径名第二个参数,为真表示以平铺的方式显示位图;精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 7 页,共 15 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 7 页,共 15 页 - - - - - - - - -8图像列表控件 imagelist8.1 图像控件的使用图像列表控件和其它不一样,可以在控件窗口找到,如果要使用图像列表控件,必须自己定

20、义一个,比如在对话框类里定义一个图像列表对象;cimagelist m_imagelist;图像是图标,比如先插入三个图标吧。插入之后,在对话框初始化(oninitdialog 方法)中,添加以下语句:m_imagelist.create(32,32,ilc_color24|ilc_mask,1,0);m_imagelist.add(loadicon(afxgetresourcehandle(),makeintresource(idi_icon1);m_imagelist.add(loadicon(afxgetresourcehandle(),makeintresource(idi_icon2

21、);m_imagelist.add(loadicon(afxgetresourcehandle(),makeintresource(idi_icon3);上面那个 idi 是图标的id ;如果要想图标在窗口显示,就要在onpaint 方法 else 添加以下语句:cdc *pdc=getdc();cpoint pt;pt.x=30;pt.y=50;for(int i=0;ifillrect(crect(0,0,50,20),&cbrush(m_clcolor);精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 9 页,共 15 页 - - -

22、- - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 9 页,共 15 页 - - - - - - - - -10树视图控件101 如何使用树图控件先为视图关联一个类,名为m_orginfo; 再在对话框增加一个图像列表控件的对象成员。如: cimagelist m_imagelist; 然后再在oninitdialog 函数插入以下语句:m_imagelist.create(24,24,ilc_color24|ilc_mask,1,1);m_imagelist.add(loadicon(afxgetresourcehandle(),

23、makeintresource(idi_icon1);m_imagelist.add(loadicon(afxgetresourcehandle(),makeintresource(idi_icon2);m_imagelist.add(loadicon(afxgetresourcehandle(),makeintresource(idi_icon3);m_orginfo.setimagelist(&m_imagelist,tvsil_normal);htreeitem hprovince=m_orginfo.insertitem(吉林省 ,0,0);/0 ,0 根结点htreeitem

24、 htown=m_orginfo.insertitem(松原市 ,1,1,hprovince);/*1 ,1 子结点,第二,属于hprovince;*/m_orginfo.insertitem( 白城市 ,1,1,hprovince);/ 同上m_orginfo.insertitem( 怀化市 ,2,2,htown);/2.2子结点,第三,属于htownm_orginfo.insertitem( 湖南省 ,0,0);/ 根结点精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 10 页,共 15 页 - - - - - - - - -精品学习资料 可选择

25、p d f - - - - - - - - - - - - - - 第 10 页,共 15 页 - - - - - - - - -11标签控件 tapcontrol11.1如何使用标签控件。标签控件里的每一个控件其实是一个对话框,只不过这个对话框属性样式里那个样式要选为下层,边框选择细小,然后把那个标题栏的勾给去掉。这样当按了标签,就调用相应的对话框,对话框要用非模式调用。如何添加标签的数量,和每个标签的信息呢,这里要用到insertitem 函数,先为标签关联一个类名为m_tap;这样,如果我要添加两个标签就是:m_tap.insertitem(0,”图书基础信息 ” ,0);m_tap.i

26、nsertitem(1,”图书信息删除 ” ,1);有一个问题,要如何知道用户当前选择的是哪个一标签呢?在这里我们得用getcursel 函数;如 int ncursel=m_tap.getcursel(); 这样函数的返回值就是当前用户所选择标签的号码。记住:调用对话框,要包含头文件。这样:在主对话框oninitdialog 中插入以下语句:m_tap.insertitem(0, 图书基础信息,0);/ 第三个参数表示图像索引m_tap.insertitem(1, 图书信息删除 ,1);m_bookinfo.create(idd_dialog1,&m_tap);m_bookdelet

27、e.create(idd_dialog2,&m_tap);crect clientrc;m_tap.getclientrect(clientrc);clientrc.deflaterect(2,30,2,2);m_bookinfo.movewindow(clientrc);m_bookdelete.movewindow(clientrc);m_bookinfo.showwindow(sw_show);m_tap.setcursel(0);而用户点击标签控件,就如同按钮控件,双击标签控件,添加用户单击标签处理事件。精品学习资料 可选择p d f - - - - - - - - - - -

28、 - - - 第 11 页,共 15 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 11 页,共 15 页 - - - - - - - - -12 滑块控件121 如何使用滑块控件要想使用滑块控件,先来说说滑块控件关联类的几个成员函数,setrange这个函数用于设置滑块的范围。getpos用于获得当前滑块的位置,setpos设置滑块的位置。首先我们来为滑块控块关联一个对象,如m_rslider;然后在oninitdialog 方法中设定范围即:m_rslider.setrange(0,255);这里有一个问题

29、了,如何找到滑块控件的消息滑动处理函数呢,像按钮一样双击吗?这样是不行的,必须自己添加一个滑动消息处理函数,方法是,按ctrl+w 组合键,选择messagemap;在 object ids 选择滑块控块的id 然选中左侧onreleasedcapture然后再点击add funtion就样添加了一个滑动消息处理函数,在这个函数里你就可心处理滑块滑动的事件。如在这个函数加以下语句:|cstring outresult;outresult.format(%d,m_rslider.getpos();messagebox(outresult);/m_rslider.setpos(0);除了上面那个方

30、面获取滑块滑动,还有什么其它的方法呢?当然有:在对话框添加一个wm_hscroll; 这个是什么意思呢?意思是只要对话框有任何水平滑块滑动,这个消息的关联的函数,都会被执行,但要如何判断,是滑了哪一个滑块呢?看下面代码:if(nsbcode=sb_thumbtrack)if(pscrollbar-m_hwnd=m_rslider.m_hwnd)/m_rslider为滑块关联的idm_nrvalue=npos;updatedata(false);if(pscrollbar-m_hwnd=m_gslider.m_hwnd)m_ngvalue=npos;updatedata(false);if(ps

31、crollbar-m_hwnd=m_bslider.m_hwnd)m_nbvalue=npos;updatedata(false);精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 12 页,共 15 页 - - - - - - - - -精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 12 页,共 15 页 - - - - - - - - -14 字体对话框往对话,框里添加一个编辑框控件,并关联类对象为m_edit; 再在对话框类中,添加一个字体对象,即cfont font; 接着在按钮单击事件添加如下语句

32、:cfontdialog ftdlg;if(ftdlg.domodal()=idok)logfont logfont;ftdlg.getcurrentfont(&logfont);font.createfontindirect(&logfont);m_edit.setfont(&font);上面那个 if 判断是非常有必要的,如果没有此判断语句而用户选择了取消的话,将会出错,因为不管用户如何选择,都会设置字体。精品学习资料 可选择p d f - - - - - - - - - - - - - - 第 13 页,共 15 页 - - - - - - - - -精品学习资料

33、 可选择p d f - - - - - - - - - - - - - - 第 13 页,共 15 页 - - - - - - - - -15 静态文本控件151 如何使用静态文本控件先在对话框添加一个文本控件,然后右击选择属性,接下来怎么做就不用我说了,这里主要说一个怎么通过点击静态文本控件而达到访问网页的效果,首先为静态文本控件关联一个对象,在这里,使用用类向导不能直接为其关联,用什么方法呢?把文本控件对应的id 号给改了,就可为其关联一个对象,关联一个对象后,还添加一个点击消息映射,处理事件函数,在函数加如下语句:|cstring szurl;m_url.getwindowtext(szurl);/假设关联的对象为m_ur

温馨提示

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

评论

0/150

提交评论