医用仪器软件设计-基于MFC-C2_第1页
医用仪器软件设计-基于MFC-C2_第2页
医用仪器软件设计-基于MFC-C2_第3页
医用仪器软件设计-基于MFC-C2_第4页
医用仪器软件设计-基于MFC-C2_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

医用仪器软件设计——基于MFCMFC的类与控件02Contents.1字符串类CString2容器类3控件1.字符串类CString1.1MFC的两种编码格式UNICODE编码为宽字节编码,使用Unicode字符集MBCS编码为多字节编码,使用多字节字符集Unicode又称为万国码,是国际组织制定的旨在容纳全球所有字符的编码方案所有的字符都使用两个字节编码的编码模式,以满足跨语言、跨平台的要求MBCS可以使用不同长度的字节编码单字节字符包含拉丁文字母表等双字节字符被用来表示东亚及中东的语言注意:在不同的编码格式下,字符串之间进行相互转换的方法是不一样的。课本用的是多字节字符集。1.字符串类CString1.2_T宏MFC具有两种编码字符集,故两种字符串都支持,分别使用L””(宽字节编码)和””(多字节编码)包裹,_T可以保证转换编码类型时,程序不需要修改,即可以保证两种编码字符集在程序中的兼容。为什么使用_T宏?如何实现_T宏?微软使用统一的_T(””)包裹字符串。在tchar.h文件中可以看到对_T宏的定义:#define_T(x) __T(x)#define_TEXT(x) __T(x)#define__T(x) L##x//编码格式为UNICODE#define__T(x) x//编码格式为MBCSL表示UNICODE编码,以UNICODE格式保存字符串_T可以表示UNICODE,也可以表示MBCS,取决于项目编码格式设置,会自动转换1.字符串类CString1.2_T宏C++基本数据类型中表示字符的有两种:char、wchar_tchar:多字节字符,一个char占一个字节。之所以叫多字节字符是因为表示一个字时可能是一个字节也可能是多个字节。比如:一个英文字符(如’s’)用一个char(一个字节)表示,一个中文汉字(如’中’)用3个char(三个字节)表示。wchar_t类型:宽字符,一个wchar_t占2个字节。之所以叫宽字符是因为所有的字都要用两个字节(即一个wchar_t)来表示,不管是英文还是中文。如何使用_T宏?宽字节编码:L””多字节编码:

””兼容写法:_T(””)UNICODE编码wchar_tstr1[20]=L"Hello";charstr2[20]="Hello";MBCS编码wchar_tstr1[20]=_T("Hello");charstr2[20]=_T("Hello");示例:1.字符串类CString1.3TCHAR类型UNICODE编码格式下: typedefwchar_tTCHAR;TCHAR类型的用途:存储_T(””)类型的通用字符MBCS编码格式下: typedefcharTCHAR;//UNICODE编码格式下TCHARtchar;wchar_twchar;intsize1=sizeof(tchar);//size1值为2,TCHAR表示wchar_tintsize2=sizeof(wchar);//size2值为2,表示wchar_t为宽字符类型//MBCS编码格式下TCHARtchar;chara;intsize1=sizeof(tchar);//size1值为1,TCHAR表示charintsize2=sizeof(a);//size2值为1,表示char为多字节字符类型TCHAR被定义为wchar_t类型(2字节,16位字符类型)TCHAR被定义为char类型(1字节,8位字符类型)示例:1.字符串类CString1.4CString构造函数CString类中有多种构造函数,下面简单介绍常用的几种:CString();默认构造函数,构造一个空的字符串对象。

CStringstr;CString(constCString&stringSrc);将一个已知CString对象stringSrc的内容拷贝到该CString对象。

CStringstr1(_T("HelloWorld")); //str1=="HelloWorld"

CStringstr2(str1); //str2=="HelloWorld"CString(LPCTSTRlpch,intnLength);将字符串lpch中的前nLength个字符拷贝到该CString对象。 CStringstr(_T("HelloWorld“),5); //str=="Hello"CString(TCHARch,intnRepeat);构造一个含有nRepeat个ch的字符串。

CStringstr(_T('w‘),3); //str=="www"1.字符串类CString1.5编辑字符串CString类中提供了很多简便的函数来编辑字符串,下面简单介绍常用的函数:Insert()在指定位置插入字符或字符串,并返回插入后的字符串的长度。

函数原型为intInsert(intnIndex,TCHARtChar)或intInsert(intnIndex,LPCTSTRpstr) nIndex:插入位置的索引值;tChar:待插入的字符;pstr:待插入的字符串。

示例: CStringstr(_T("Hello")); //str="Hello"

intn=str.Insert(5,_T("World")); //str="HelloWorld",n=10

intm=str.Insert(10,_T("!")); //str="HelloWorld!",m=11Remove()在字符串中移除指定的字符,并返回移除的字符的数目。

函数原型为intRemove(TCHARtChar)tChar:待移除字符

示例: CStringstr(_T("Hello")); //str="Hello"

intn=str.Remove(_T('l')); //str="Heo",n==21.字符串类CString1.5编辑字符串Replace()替换当前字符中的字符或字符串,并返回替换的数目,若在当前字符串中不存在,则返回0。

函数原型为intReplace(TCHARchOld,TCHARchNew)或intReplace(LPCTSTRlpszOld,LPCTSTRlpszNew)chOld/lpszOld指定的字符或字符串将被参数chNew/lpszNew替换

示例: CStringstr(_T("tooth")); //str="tooth"

intm=str.Replace(_T('o'),_T('e')); //str="teeth",m=2

intn=str.Replace(_T(“ee”),_T(“oo”)); //str="tooth",n=1

intt=str.Replace(_T(“bb”),_T(“oo”)); //str="tooth",t=0Delete()在当前字符串的指定位置移除指定数量的字符,并返回值已改变的字符串的长度。

函数原型为intDelete(intnIndex,intnCount) nIndex:移除位置的索引值;nCount:待移除字符的数量。

示例: CStringstr(_T("early")); //str="early"

intd=str.Delete(3,2); //str="ear",d=31.字符串类CString1.5编辑字符串SetAt()修改当前字符串中指定位置的字符。

函数原型为VoidSetAt(intnIndex,TCHARtChar)nIndex:修改位置的索引值;tChar:修改后的字符。

示例: CStringstr(_T("book")); //str="book"

str.SetAt(0,_T('l')); //str="look"Mid()从当前字符串中的指定位置往后截取指定长度的字符串并返回。

函数原型为CStringMid(intnFirst,imtnCount)nFirst:截取位置的索引值;nCount:裁取字符串的长度。

示例: CStringstr1(_T("PackUnpackDemo")); //str1="PackUnpackDemo"

CStringstr2=str1.Mid(4,6); //str2="UnpackLeft()和Right()从当前字符串的开头或结尾截取指定长度的字符串并返回。

函数原型分别为CStringLeft(intnCount)和CStringRight(intnCount)nCount:截取字符串的长度。

示例: CStringstr1(_T("PackUnpackDemo")); //str1="PackUnpackDemo"

Cstringstr2=str1.Left(4); //str2="Pack"

CStringstr3=str1.Right(4); //str3="Demo"1.字符串类CString1.6字符串查询CString类中提供了很多简便的函数来查询字符串,下面简单介绍常用的函数:函数功能str(例子)形式返回值GetLength()返回当前字符串中字符的个数“Length”intnumber=str.GetLength();number=6GetAt()获取当前字符串中指定位置的字符并返回“Length”TCHARtChar=str.GetAt(3);tChar='g'IsEmpty()判断当前字符串是否为空“Length”BOOLflag1=str.IsEmpty();flag1=0空BOOLflag2=str.IsEmpty();flag2=1Find()在当前字符串(或指定位置往后)中查找指定字符或字符串首次出现的位置并返回,未找到则返回-1“HelloWorld”inta=str.Find(_T('o'));a=4intb=str.Find(_T(“ll”));b=2intc=str.Find(_T('o'),5);c=6intd=str.Find(_T(“ll“),5);d=-11.字符串类CString1.7字符串转换除了编辑和查询,字符串常还需要与其他数值类型或字符集进行转换,下面简单介绍常用的函数:函数功能str/num(例子)形式返回值_ttoi()字符串转换为整型“12”intnumber=_ttoi(str);number=12_ttof()字符串转为浮点型“1.23”floatnumber=_ttof(str);number=1.23Format()将其他类型数值转换为字符串number=25pi=3.14159str1.Format(_T("%d"),number);str1="25"str2.Format(_T("%3o"),number);str2=“31",转8进制,不足3位在前面补空格str3.Format(_T("%.4x"),number);str3="0019",转16进制,不足4位在前面补0str4.Format(_T("%4.1f"),pi);str4=“3.1",保留小数点后1位,不足4位在前面补空格MakeUpper()MakeLower()将当前字符串转化为大写和小写“HelloWorld”str.MakeUpper();str="HELLOWORLD"str.MakeLower();str="helloworld"MakeReverse()所有字符颠倒顺序“reed”str.MakeReverse();str="deer"2.容器类vector2.1容器类介绍vector是个封装了动态大小数组的顺序容器(SequenceContainer),它能够存放各种类型的对象,可以简单的理解为,向量vector是一个能够存放任意数据类型的动态数组,其主要特点如下:顺序序列:顺序容器中的元素按照严格的线性顺序排序,可以通过元素在序列中的位置访问对应的元素。动态数组:支持对序列中的任意元素进行快速直接访问,甚至可以通过指针进行该操作。还提供了在序列末尾相对快速地添加或删除元素的操作。内存分配器:使用一个内存分配器对象来动态处理存储需求。注意:vector类是随标准C++引入的标准库的一部分,使用时需要包含头文件:#include<vector>2.容器类vector2.2vector的定义和初始化vector类提供了多种构造函数,常用的几种:注意:使用vector前需要先引入命名空间:usingnamespacestd,或在进行vector定义时添加std::前缀vector():创建一个空vector。vector(intnSize):创建一个vector,元素个数为nSize,初始值默认为0。vector(intnSize,constT&t):创建一个vector,元素个数为nSize,且值均为t。vector(constvector&x):复制构造函数。vector类的用法举例:std::vector<int>list1; //list1为空std::vector<int>list2(10); //list2中存有10个整型数据,值都为0std::vector<int>list3(10,2); //list3中存有10个整型数据,值都为2std::vector<int>list4(list3); //list4中存有10个整型数据,值都为22.容器类vector2.3vector的常用成员函数push_back()在向量尾部增加一个元素。pop_back() 删除向量中的最后一个元素。clear() 清空向量中的所有元素。size() 返回向量元素的个数。empty() 判断向量是否为空,是则返回true,否则返回false。

示例: vector<int>list(2); //list2中存有2个整型数据,值都为0

intnumber=list.size(); //number=2

list.push_back(1); //添加1个元素

number=list.size(); //number=3

list.pop_back(); //删除最后1个元素

number=list.size(); //number=2

list.clear(); //清空list

boolflag=list.empty(); //flag=true

number=list.size(); //number=03.控件3.1按钮Button功能:用于接收用户命令,应用程序在接收到用户命令后,通常需要进行一些后台工作。按钮可以响应单击或双击动作,在按钮检测到动作后,向其父窗口发送相应的通知,程序可以根据通知的类型进行相应的逻辑处理。描述文字:显示在控件上的文本ID:该控件在项目中的资源ID,建议根据控件的功能对应修改控件的ID,增加控件的辨识度和代码的可读性编号3的区域:该控件在设计界面中的坐标(以左上角为原点)编号4的区域:该控件的尺寸属性属性3.控件3.1按钮Button对齐和预览将3个按钮全选,对话框编辑器的对齐功能都转变为可用状态(大部分按钮在只选中一个控件时不可用)。鼠标悬停即可预览按钮的功能。点击该按钮可以在不可编译运行项目的情况下预览该对话框的运行效果功能从左到右为:左对齐右对齐顶端对齐底端对齐垂直居中水平居中横向等间距纵向等间距使宽度相同使高度相同使大小相同3.控件3.1按钮Button消息映射MFC提供了消息映射机制来处理按钮的单击和双击等触发事件。3.控件3.2复选框CheckBox功能:CheckBox控件提供一个带有文本标签的复选框,可以打开(选中)或关闭(取消选中)。当一组复选框提供多个选项时,同一时间可以有任意个复选框处于选中状态,且各个复选框之间相互独立,互不影响。操作复选框的方法:为复选框控件添加一个Cbutton类变量通过该变量即可调用CButton类中的函数SetCheck()函数设置复选框的勾选状态GetCheck()函数获取复选框当前的状态3.控件3.3编辑框EditControl功能:编辑框EditControl用来接收用户输入的文本。操作编辑框的方法:为编辑框控件添加一个CEdit类变量通过该变量即可调用CWnd类(CEdit类继承自该类)中的函数

GetWindowText()函数获取编辑框中的文本

SetWindowText()函数设置编辑框中的文本3.控件3.4组合框ComboBox功能:组合框ComboBox为编辑框和列表框的组合。共有3种类型:操作组合框的方法:为组合框控件添加一个CComboBox类变量通过该变量即可调用CComboBox类中的函数 AddString()函数向组合框的选项列表中添加选项

SetCurSel()函数将选项列表中的某一项设置为组合框的当前选项 GetCurSel()获取组合框的当前项在选项列表中的索引简易(Simple)组合框:直接显示组合框中的选项列表框,单击任一项即可将其设置为组合框的当前项,选项的内容可编辑下拉式(Dropdown)组合框:默认不显示选项列表框,只有在单击组合格右侧的下拉按钮时才会弹出,单击任一项即可将其设置为组合框的当前项,选项的内容可编辑下拉列表(DropdownList)式组合框:与下拉式组合框的唯一区别是选项的内容不可编辑注意事项:下拉列表添加选项:在“数据”选项中添加选项的文本即可,各个选项之间用英文格式的分号“;”隔开将“排序”选项后的True改为False:目的是让选项列表按照用户在“数据”选项中输入的顺序显示,否则系统可能会将输入的选项重新排序3.控件3.5列表框ListBox功能:列表框ListBox控件提供一个选项列表,可分为单选列表框和多选列表框,取决于用户对控件的属性设置。单选列

温馨提示

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

评论

0/150

提交评论