VC++知识.docx
- 文档编号:13594966
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:24
- 大小:68.22KB
VC++知识.docx
《VC++知识.docx》由会员分享,可在线阅读,更多相关《VC++知识.docx(24页珍藏版)》请在冰点文库上搜索。
VC++知识
1、C++是一种计算机语言,而VC++是一种开发环境。
2、C是一种结构化程序语言,是面向过程的设计语言。
C++是面向对象的程序设计语言。
3、C++与C完全兼容,既可用于结构化程序设计,又可用于面向对象的程序设计。
4、VC++的全称VisualC++,是集成化的开发环境(IDE:
IntegratedDevelopmentEnvironment),是基于面向对象的编程语言,是以C++语言为基础的可视化的编程环境。
5、在VC++中可以创建DOS环境下运行的程序,也可以创建Windows环境下的运行的程序,在DOS环境下运行的程序为(控制台)应用程序。
6、VC++6.0可以创建的项目类型:
VC++6.0可以创建的项目类型
项目类型
说明
项目类型
说明
ATLCOMAppWizard
创建ATL应用程序
DatabaseProject
创建数据库项目
Win32Dynamic-LinkLibrary
创建Win32动态链接库
DevStudioAdd-inWizard
创建自动化宏
CustomAppWizard
创建自定义的AppWizard
ISAPIExtensionWizard
创建Internet服务器或过滤器
Makefile
创建Make文件
MFCActiveXControlWizard
创建ActiveX控件程序
MFCAppWizard(dll)
创建MFC动态链接库
MFCAppWizard(exe)
创建MFC可执行程序
Win32Application
创建Win32应用程序
Win32ConsoleApplication
创建Win32控制台应用程序
ClusterResourceTypeWizard
通过它可以创建两种项目类型(ResourceDLL和ClusterAdministratorExtensionDLL)
UtilityProject
通过它可以创建一个效用项目,该项目只作为其他子项目的一个包容器,减少子项目的编联时间,但它本身并不包含任何文件
Win32StaticLibrary
创建Win32静态库
6、VC++工作界面:
项目工作区窗口、文档窗口(编辑窗口)、输出窗口。
项目工作区窗口(Workspace)—以树形结构显示开发项目中的各部分内容,类似操作系统的资源管理器。
(通过单击View/Workspace打开该菜单。
)项目工作区有3个选项卡:
ClassView(类视图)、ResourceView(资源视图)、FileView(文件视图)。
●ClassView(类视图):
将工程中所包含的类、事件、函数及变量等在类视图中以层次的结构排列,不仅可以使用户快速地找到它们,并且可以直接双击它们,以便用户在编辑区中操作源代码。
单击图标旁的+号时,ClassView展开该类并显示其类成员。
利用ClassView不仅可以浏览应用程序所包含的类以及类中的成员,还可以快速跳到一个类或成员的定义,步骤如下:
1.选择要查找的定义或声明的符号
2.双击所选的符号名。
要打开关于某一个类声明的头文件,只需双击类名即可。
要想查找某一个变量的参考:
1.将光标定位在该符号处
2.按鼠标右键,弹出快捷菜单,选择Reference(此时应确保已经生成了Browse(浏览)文件,关于Browse文件的选项,可以在Project-Settings中设置)。
●ResourceView(资源视图):
在VC中,所有的菜单、图标、光标、图片、对话框等,都是以资源的形式进行管理的,而管理它们的就是ResourceView。
用户可以找到应用程序中的各种资源,并且可以编辑它们的ID号及样式、属性等,包括对话框的设计、图标、菜单等。
●FileView(文件视图):
包含用户工程中的各种文件,用户可以查看并编辑。
查看文件;管理文件:
包括增加、删除、移动、重命名、拷贝文件等。
要增加一个文件到过程中,可以选择Project->AddtoProject->Files菜单,弹出文件对话框,选择相应文件即可;要从工程中删除一个文件,可打开工程文件夹,选择相应文件,然后按DEL键。
✧SourceFiles(源文件),HeaderFiles(头文件),ResourceFiles(资源文件),ExternalDependencies(外部依赖文件)
✧SourceFiles放源文件(.c、.cpp)程序的实现代码全放在这里
✧HeaderFiles放头文件(.h)声明放在这里
✧ResourceFiles资源文件(.rc)放图标、图片、菜单、文字之类的,主要用来做界面的东西一般都放这里
✧ExternalDependencies除上三种以外的,程序编译时用到的文件全放这里
文档窗口(编辑窗口或编辑区,EditorArea)—代码编辑窗口。
输出窗口(OutputPanel)——编译(build/compileCtrl+F7)以发现源程序中是否存在语法错误,编译完成后对其进行链接(build/buildF7),以建立可执行文件。
编译成计算机可以识别的机器语言目标代码模块(.obj),连接形成最终可以执行的程序。
显示error/waring
●编译程序的进展说明、警告及出错信息。
●查找某个关键字所在的位置的信息。
●在调试运行查看代码时,用户所关心的所有变量的值等信息。
Ctrol+F5或者工具栏中的!
按钮,运行程序。
Build/Execute*.exe
7、标准的C++程序的基本组成:
预处理命令、函数、语句、变量、输入/输出及注释等几个部分。
1预处理命令:
以“#”开始。
有三种预处理命令:
宏定义命令、文件包含命令(#include)及条件编译命令。
2函数:
由函数名和函数体组成。
组成C++程序的基本单位是函数。
一个C++程序通常有若干个函数组成,这些函数可以是系统提供的库函数,或用户编写的自定义函数。
在这些中,必须有且仅有一个主函数main,不论主函数位于什么位置,该程序都是从主函数开始执行的。
函数体用一对大括号{}圈起来。
3语句:
语句是组成程序的基本单元,(顺序语句、选择语句、循环语句等),以分号结束,最简单的是空语句,它仅包括一个分号。
4变量:
在C++中,需要将数据存放于内存单元中,而变量就是用来存储和访问内存单元中数据的标识符。
(整型、字符型、浮点型等等)变量名由字母、数字和下划线3类字符组成,并且第一个字符必须为字母或下划线。
区别大小写。
5输入/输出:
接收用户的输入和返回程序运行结果。
6注释:
帮助读者阅读源程序,但不参与程序的运行。
//注释一行;/**/注释一段。
被注释后以绿色字体显示。
7使用cin或cout进行I/O操作时,在程序中必须嵌入头文件iostream.h,否则编译时会产生错误。
8cin是标准的输入流。
输入运算符">>"在用于输入时,表示将从标准输入流(即键盘)读取的数值传送给右方指定的变量。
9输入运算符“>>”允许用户连续输入一连串的数据,它按照输入顺序从键盘上提取所要求的数据,并存入对应的变量中。
cin通常使用空格、回车或Tab键来区分输入数据。
10cout是标准输出流。
输出运算符"<<"用于输出时扩充了功能,表示将右方变量的值写到标准输出流cout中,即显示在屏幕上。
当我们使用C++I/O流进行输入输出时,编译器会提供关于每个数值的类型信息,所以没有必要使用格式修饰符。
8、对话框的定义
对话框是用户与应用程序进行交互的一种重要界面。
用于显示和获取用户输入,它通过一个或多个控件与用户进行交互,是Windows应用程序中最重要的用户界面元素之一。
对话框没有最大化、最小化按钮,没有菜单栏,不能改变形状大小。
9、对话框的组成
1对话框模板:
对话框模板定义了对话框的特性(比如大小、位置和风格)以及对话框中每个控件的类型和位置。
2对话框类:
从CDialog类派生的对话框类提供编程接口来管理对话框。
10、对话框的分类
1模态对话框:
在对话框关闭之前,用户无法在应用程序的其他窗口中进行工作的对话框称为模态对话框。
(举例)
2非模态对话框:
在对话框仍然保留在屏幕的同时,用户还可以在应用程序的其他窗口中进行工作的对话框。
(例如:
Find和Replace)
11、MFC类库概述
建立MFC库的目的是为了简化Windows应用程序的编制。
CObject类——根类(是MFC的抽象基类)
CWnd:
窗口类,它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc。
一个例外是菜单(CMenu)不是从窗口派生的。
该类很大,一开始也不必学,知道就行了。
CDocument文档,负责内存数据与磁盘的交互。
最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)
CView视图类,负责内存数据与用户的交互。
包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。
最重要的是OnDraw(重画窗口),通常用CWnd:
:
Invalidate()来启动它。
另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。
你自己的许多功能都要加在里面,你打交道最多的就是它。
CDC设备文本。
无论是显示器还是打印机,都是画图给用户看。
这图就抽象为CDC。
CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显示工作。
把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。
CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。
CDialog对话框类
CWinApp应用程序类。
似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。
最常用函数InitInstance():
初始化。
CGdiObject及子类,用于向设备文本画图。
它们都需要在使用前选进DC。
CPen笔,画线
CBrush刷子,填充
CFont字体,控制文字输出的字体
CBitmap位图
CPalette调色板
CRgn区域,指定一块区域可以用于做特殊处理。
CFile文件。
最重要的不外是Open(打开),Read(读入),Write(写)
CString字符串。
封装了C中的字符数组,非常实用。
CPoint点,就是(x,y)对
CRect矩形,就是(left,top,right,bottom)
CSize大小,就是(cx,cy)对(宽、高)
12、命令相关类——CCmdTarget类:
CView(视图类)、CWinApp(窗口应用程序类)、CDocument(文档类)、CWnd(窗口类)、CFrameWnd(框架类)。
13、创建对话框
用类向导ClassWizard创建对话框类。
{ResourceView(资源视图):
在VC中,所有的菜单、图标、光标、图片、对话框等,都是以资源的形式进行管理的,而管理它们的就是ResourceView。
用户可以找到应用程序中的各种资源,并且可以编辑它们的ID号及样式、属性等,包括对话框的设计、图标、菜单等。
}
常用的资源及标识前缀
对话框IDD_;菜单及快捷键IDR_;菜单项IDM_;光标及控件IDC_;
命令项ID_;图标IDI_;位图IDB_;字符串IDS_或IDP_;
14、类和对象的概念?
如何定义类、对象?
●类是具有相似特征的对象的抽象,例如:
●文件类所有具体文件对象的抽象
●书类所有具体书对象的抽象
●学生类所有具体学生对象的抽象
●对象是一件事物,属性和操作
●属性:
状态,特征,组成成员;
●操作:
修改属性,访问属性,执行命令。
例如:
●文件具有文件名、长度、修改日期、内容等属性;
●文件可进行复制、更名、打印等操作
●类(class)是一种可由用户定义的、封装有(数据成员)及其(成员函数)的类型。
因此,类是一种数据结构,含有数据及其操作函数的封装体。
class是定义类必须使用的关键字,class后面是用户定义的类的名称。
●类的定义一般格式:
class类名
{
类定义体
};
●关键字class引出一个类的定义或说明。
类名是类的代表。
●类定义体是类的数据成员和函数成员的说明。
函数成员用来对这些数据成员进行操作。
声明类中的数据成员和函数成员与程序其他部分的关系:
公有成员(public),私有成员(private),受保护成员(protected)。
类与对象的区别:
1.类是抽象的,对象是具体的
2.类是类型,对象是变量
3.类是模型,对象是实例
15、类的继承和派生
classEmployee
{
protected:
//保护类的成员可以被其派生类访问
charm_strName[256];//姓名
longm_nID;//编号
public:
Employee(char*strName,longnID);
char*GetName();
longGetID();
};//注意分号不要丢
classManager:
publicEmployee//声明派生类
//class派生类名:
[继承方式]基类名
{
private:
doublem_fTeleAllowance;
public:
Manager(char*strName,longnID,doublefTeleAllowance);
doubleGetTeleAllowance();
voidPrint()//输出基类和派生类中的属性信息
{
cout<<"姓名:
"< "< "< }//派生类中可以直接调用基类定义的保护成员 };//注意分号不要丢 继承的概念 继承是C++语言的一种重要机制,该机制自动地为一个类提供来自另一个类的操作和数据结构,这使得程序员只需在新类中定义已有类中没有的成分来建立新类,从而使程序易重用、易维护。 引入继承的目的 •为代码重用提供有效手段,无需修改基类源码,可从基类来裁剪、扩充基类,满足不断变化的具体应用要求,达到代码重用和易维护、可扩充的目的。 •继承是实现递增式程序设计的有效途径。 继承方式3种: public、private、protected。 类中的私有成员(private)既不允许外部函数访问,也不允许派生类的成员函数访问。 保护成员(protected)的作用: 为了让派生类的成员函数直接访问基类私有数据成员,C++提供了具有另一种访问属性的成员---保护成员,即protected成员,它的访问属性是: 外部函数不能访问保护成员,但派生类中的成员函数可直接访问。 class派生类名: 继承方式基类名 {public: 派生类新增加的成员; protected: 派生类新增加的成员; private: 派生类新增加的成员; }; 例子: #include"iostream.h" classclass1 { public: func1() { cout<<"11111111\n"; } }; classclass2 { public: func2() { cout<<"22222222\n"; } }; classclass3: publicclass1 { public: func3() { cout<<"33333333\n"; } }; classclass4: publicclass1,publicclass2 { public: func4() { cout<<"44444444\n"; } }; classclass5: publicclass4 { public: func5() { cout<<"55555555\n"; } }; voidmain() { class1object1; class2object2; class3object3; class4object4; class5object5; object1.func1(); object2.func2(); object3.func1(); object3.func3(); object4.func1(); object4.func2(); object4.func4(); object5.func1(); object5.func2(); object5.func4(); object5.func5(); } 单一继承: 派生类上层只有一个基类 多重继承 派生类由多个基类派生而来 多级派生 继承和派生都可以有很多层次,基类和派生类是相对的概念 CDialog类是对话框的基类。 MCObject类是一个根类,是利用MFC编程时所编写的所有类的根; MCCmdTarget是消息映射类; MCWnd是窗口类; MCDialog是用于屏幕上显示对话框的基类,对话框类。 16、类的成员函数的定义: 成员函数的定义若放在外面,需在函数名前面加上类名和作用域区分符": : "。 成员函数体在类的外部定义的形式为: 返回类型类名: : 函数名(参数表) { 函数体 } 例: 声明并定义坐标点类。 classpoint {intx,y; public: voidsetpoint(int,int); intgetx(); intgety(); }; voidpoint: : setpoint(inta,intb) { x=a;y=b; } intpoint: : getx() { returnx; } intpoint: : gety() { returny; } 注意: 在类定义的外部定义成员函数,必须在该函数前面使用"类名: : "表达式形式把它与该类紧密连在一起;否则编译器就会认为该函数是一个与类中的成员函数同名的普通函数。 17、函数的种类 从用户使用的角度可分为: 系统函数 又称库函数,是由编译系统提供的,用户可以直接调用这些函数。 库函数包含在不同的头文件中。 用户自定义函数 为了完成特定功能而编写的的函数。 库函数的含义及作用: 在程序中调用库函数,必须在程序的开头写明头文件。 C++的库函数有很多,需要时可查阅有关手册。 常用数学函数(#include"math.h") 函数名 功能 abs 求整数的绝对值 fabs 求浮点型数据的绝对值 sqrt 计算平方根 pow 计算任意次方 log 求自然对数 log10 求以10为底的对数 rand 产生一定区间内的随机整数 18、从函数的形式角度可分为: 无参函数 调用函数时不必传递参数。 有参函数 调用函数时需要传递参数。 定义无参函数的一般形式是: 类型标识符函数名() { 声明部分 语句 } 操作实例2.6 #include"iostream.h" voidcalaadd() { intm,n,t; cout<<"请输入两个整数\n";//提示输入语句 cin>>m>>n; t=m+n; cout<<"两个整数的和是: "< } voidcaladiff() { intx,y,z; cout<<"请输入两个整数\n"; cin>>x>>y; z=x-y; cout<<"两个整数的差是: "< } voidmain() { calaadd(); caladiff(); } 面向过程的程序设计思想。 操作实例2.7 intcalaadd() { intm,n,t; cout<<"请输入两个整数\n";//提示输入语句 cin>>m>>n; //t=m+n; returnt=m+n; } intcaladiff() { intx,y,z; cout<<"请输入两个整数\n"; cin>>x>>y; z=x-y; returnz; } voidmain() { intsum,diff; sum=calaadd();//接收函数返回值 cout<<"两个整数的和是: "< diff=caladiff(); cout<<"两个整数的差是: "< } 实例分析 1、无返回值的函数类型是void 2、有返回值则应写明函数的类型,函数返回值的类型应与函数类型一致,如果不一致,以函数类型为准。 函数的返回值通过return语句实现。 return语句后面可以是变量,也可以是表达式,如果是表达式则先计算表达式的值,再把值返回到调用函数中。 使用return语句向调用函数返回数据。 返回语句一般放在程序的最后一行,执行到return语句后,程序就结束了,即使下面还有语句,也不会执行。 函数返回值的类型应与函数类型一致! 19、有参函数的定义 定义有参函数的一般形式是: 类型标识符函数名(形式参数表列) { 声明部分 语句 } 操作实例2.8 intcalaadd(intm,intn) { intt; //cout<<"请输入两个整数\n";//提示输入语句 //cin>>m>>n; t=m+n; returnt; } intcaladiff(intx,inty) { intz; //cout<<"请输入两个整数\n"; //cin>>x>>y; z=x-y; returnz; } voidmain() { inta,b,sum,diff; cout<<"请输入两个整数\n"; cin>>a>>b; sum=calaadd(a,b); cout<<"两个整数的和是: "< cout<<"请再输入两个整数\n"; cin>>a>>b; diff=caladiff(a,b); cout<<"两个整数的差是: "< } 形式参数 形式参数简称形参,被调用函数定义时函数名后面括号中的参数。 实际参数 实际参数简称实参。 调用函数中调用语句函数名后面括号中的参数。 函数的参数传
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 知识