VC++编程基础知识-new_第1页
VC++编程基础知识-new_第2页
VC++编程基础知识-new_第3页
VC++编程基础知识-new_第4页
VC++编程基础知识-new_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

VC++可视化编程基础一、VC++编程环境介绍二、Windows应用程序三、MFC编程基础项目工作区窗口简介

VC项目工作区由ClassView、ResourceView及FileView三个面板组成C++多文件结构一个程序按结构至少可以划分为三个文件:类的声明文件(*.h文件)、类的实现文件(*.cpp文件)和主函数文件(使用到类的文件,*.cpp文件),如果程序更复杂,我们会为每个类单独建一个声明文件和一个实现文件。这样我们要修改某个类时就直接找到它的文件修改即可,不需要其他的文件改动。34用VC建立多文件的工程567向工程中添加文件89101112

一个C++源文件如何生成exe可执行文件?一个C++源文件翻译临时文件目标文件objexe可执行文件预处理编译连接13

多个C++源文件如何生成一个exe可执行文件?一个C++源文件翻译临时文件目标文件objexe可执行文件预处理编译连接一个C++源文件翻译临时文件目标文件obj预处理编译时钟例子//文件1:Clock类的声明,可以起名为Clock.h#include<iostream>usingnamespacestd;classClock//时钟类声明{public://外部接口

Clock();voidSetTime(intNewH,intNewM,intNewS);//三个形参均具有函数原型作用域

voidShowTime();~Clock(){}private://私有数据成员

intHour,Minute,Second;};14//文件2:Clock类的实现,可以起名为Clock.cpp#include"Clock.h"//时钟类成员函数实现Clock::Clock()//构造函数{Hour=0;Minute=0;Second=0;}voidClock::SetTime(intNewH,intNewM,intNewS){Hour=NewH;Minute=NewM;Second=NewS;}voidClock::ShowTime(){cout<<Hour<<":"<<Minute<<":"<<Second<<endl;}15//文件3:主函数,可以起名为main.cpp#include"Clock.h"//声明全局对象g_Clock,具有全局作用域,静态生存期Clockg_Clock;intmain()//主函数{cout<<"文件作用域的时钟类对象:"<<endl;//引用具有全局作用域的对象:

g_Clock.ShowTime();g_Clock.SetTime(10,20,30);

ClockmyClock(g_Clock);cout<<"块作用域的时钟类对象:"<<endl;myClock.ShowTime();//引用具有块作用域的对象}16二、Windows应用程序Windows应用程序设计方法(1)使用Windows提供的WindowsAPI函数WindowsAPI是Windows系统和Windows应用程序间的标准程序接口,应用程序可以通过此接口访问系统(2)使用Microsoft提供的MFC类库MFC类库集成了大量已经预先定义好的类,用户可以根据编程的需要调用相应的类,或根据需要自定义有关的类。

Windows应用程序的相关概念Windows应用程序以消息为基础,以事件驱动之。

事件驱动程序设计是围绕着消息的产生与处理而展开的。一条消息是关于发生的事件的信息。作为一个Windows程序员,其工作就是对正开发的应用程序所要发出或要接收的消息进行排序和管理。消息的数据结构消息的数据结构MSG的定义如下:

typedefstructtagMSG{HWNDhwnd;//用以检索消息的窗口句柄

UINTmessage;//消息值

WPARAMwParam;//包含有关消息的附加信息

LPARAMlParam;//随不同的消息而有所不同

DWORDtime;//消息送到队列的时间

POINTpt;//消息发送时,屏幕光标的位置

}MSG;

Windows常用消息

WM_LBUTTONDOWN:单击鼠标左键时产生的消息;

WM_LBUTTONUP:放开鼠标左键时产生的消息;

WM_RBUTTONDOWN:单击鼠标右键时产生的消息;

WM_RBUTTONUP:放开鼠标右键时产生的消息;

WM_LBUTTONDBLCLK:双击鼠标左键时产生的消息;

WM_RBUTTONDBLCLK:双击鼠标右键时产生的消息;

WM_CREATE:CreateWindows()函数产生的消息;

WM_CLOSE:关闭窗口时产生的消息;

WM_QUIT:退出应用程序时由PostQuitMessage()发出的消息;

WM_PAINT:Windows系统需要重绘时产生的消息。

…Windows数据类型Windows数据类型对应的基本数据类型(C语言)说明BOOLbool布尔值BSTRunsignedshort*32位字符指针BYTEunsignedchar8位无符号整数COLORREFunsignedlong用作颜色值的32位值DWORDunsignedlong32位无符号整数,段地址和相关的偏移地址LONGlong32位带符号整数LPARAMlong作为参数传递给窗口过程或回调函数的32位值LPCSTRconstchar*指向字符串常量的32位指针LPSTRchar*指向字符串的32位指针LPVOIDvoid*指向未定义类型的32位指针LRESULTlong来自窗口过程或回调函数的32位返回值UINTunsignedint32位无符号整数WORDunsignedshort16位无符号整数WPARAMunsignedint当作参数传递给窗口过程或回调函数的32位值Windows将使用的所有类型定义在Windows.h文件和其相关的文件中。一些常用的类型有句柄(HANDLE)、窗口句柄(HWND)、字符(BYTE)、短整数(WORD)、布尔型(BOOL)、字符串指针(LPSTR)以及常量字符串指针(LPCSTR)等。HANDLE是一个用作句柄的32位整数,句柄是代表某些资源的简单的数值,所有的句柄类型以H开头。

凡是数据类型的前缀是P或LP,则表示该类型是一个指针或长指针数据类型。若前缀是U,则表示无符号数据类型,等等。Windows数据类型三、MFC编程基础

MFCMicrosoftFoundationClass(微软基础类库)是用来编写Windows应用程序的C++类集,该类集以层次结构组织起来,其中封装了大部分WindowsAPI函数和Windows控件,它所包含的功能涉及到整个Windows操作系统。

MFC不仅为用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件。使用MFC的好处类是面向对象程序设计的核心概念,程序中不仅可以使用自己建立的类,还可以使用系统所提供的类,一个好的类库可以大大减少编码的数量。MFC成功之处在于,它是一个类库、一个包罗计算机系统方方面面的类库、一个集MicroSoft各路软件高手之大成的类库。通过从MFC继承自己所需要的类,可以充分利用基类所具有的各种功能。

MFC将类、类的继承、动态约束、类的关系和相互作用等应用程序概念封装起来,可以使开发者高效、轻松地建立Windows应用程序,而不受设备限制并且由事件进行驱动。MFC学习基础MFC庞大的类库中类的命名及成员变量或成员函数的命名应用程序架构面向对象分析能力25MFC库中的类按层次关系划分类:根类:CObject应用程序体系结构类窗口、对话框和控件类绘图和打印类简单数据类型类数组、列表和映射类文件和数据库类Internet和网络工作类VC++交互编程基础/zh-cn/library/d06h2x6e(v=vs.100).aspx2728可视对象类1.窗口类:CWnd类CWnd提供了MFC中所有窗口类的基本功能,是CCmdTarget类的子类创建Windows窗口要分两步进行引入构造函数,构造一个CWnd对象调用Create建立Windows窗口,并将它连到CWnd对象上2.菜单类:CMenu类该类是CObject类的子类,用于管理菜单。它是一个WindowsHMenu的封装,提供了与窗口有关的菜单资源建立、修改、跟踪及删除的成员函数。3.对话框类:CDialog类由于对话框是一个特殊的窗口,所以该类是从CWnd类中派生出来的。对话框子层次结构包括通用对话框类CDialog以及支持文件选择、颜色选择、字体选择、打印、替换文本的公共对话框子类。可视对象类(1)CDialog:所有对话框(模态或者非模态)的基类。(2)CCommonDialog:所有通用对话框类的基类。(3)CFileDialog:打开或保存文件的标准对话框。(4)CColorDialog:用于选择颜色的的标准对话框。(5)CFontDialog:选择字体的标准对话框。(6)CPrintDialog:用于打印文件的标准对话框。314.控件类

控件子层次结构包括若干类,使用这些类可建立静态文本、按钮、位图按钮、列表框、组合框、滚动条、编辑框等。这些直观控件为Windows应用程序提供了各种输入和显示界面。可视对象类(1)CStatic:静态文本控件窗口。用于标注、分隔对话框和窗口中的其他控件。(2)CButton:按钮控件窗口。该类为对话框或窗口中的按钮、检查框或单选按钮提供一个总的接口。(3)CEdit:编辑控件窗口。编辑控制用于接收用户的文字输入。(4)CScrollBar:滚动条控件窗口。该类提供控制条的功能,用做对话框或窗口中的一个控件,可通过它在某一范围内定位。(5)CSliderCtrl:滑动条控件窗口,包含一个可移动的滑标,用户可以移动滑标选择一个值或一个范围。(6)CListBox:列表框控件窗口。列表框用于显示一组列表项,用户可以进行观察和选择。(7)CComboBoxl:组合框控件窗口,它由一个编辑控制和一个列表框组成。(8)CBitmapButton:以位图而非文字作为标题的按钮。33例1、对话框的应用对话框是一些弹出式窗口信息的弹出式窗口。它通常包含,应用程序利用它可和用户进行交互式操作。对话框是应用程序,用于显示或提示并等待用户输入一个或多个控件,利用这些控件,用户可以输入文本、选择选项,并完成某一特定命令。

1.产生对话框模板应用程序向导应用程序向导39

2.设置对话框模板1)设置对话框的属性首先调整模板的大小设置对话框的风格和各边界滚动条的类型,对话框的标题等。

2)添加控件并设置控件属性添加控件要借助于控件工具条,控件工具条提供了25种控件。常用的控件是:图像控件(Picture)、静态文本框(StaticText)、编辑框(EditBox)、组框(GorupBox)、按钮(Botton)、复选框(CheckBox)和单选框(RadioButton)。图像控件用于显示位图(Bitmap)和图标(Icon);

向对话框增加控件、改变控件大小、移动控件、删除控件。设置控件的属性:设置控件的标识符(ID),标题(Caption)和各种风格(Style)等。3)定义成员变量增加了3个编辑框后,获取三个编辑框中的输入数字的常用方法是:先定义一些与控件相联系的变量,然后在程序中通过这些变量来完成对控件的控制。为控件定义变量最方便的方法是通过ClassWizard。

选中“IDC_。。。”,双击鼠标或单击添加变量(AddVariable...)按钮,弹出对话框,这个对话框用来增加与控件相联系的成员变量。有的控件不能定义与之相关的Value变量,如按扭;最后选择变量的类型填在Variabletype中,变量m_Firstnum的类型定义为float类型。

4)增加事件处理函数在程序中希望点击命令按钮“+”时,会将输入的两个数的和填入第3个编辑框。要想实现以上操作,必须为“+”这个命令按钮填加鼠标左键单击命令按扭的处理函数。这样当鼠标左键单击这个事件发生时,就会执行这个处理函数。增加事件处理函数有两种方法:

(1)通过专门的事件处理对话框

(2)可以在ClassWizard的MessageMaps标签页为控件添加事件处理函数。

此窗口用于添加、删除窗口的消息和事件处理函数。添加完单击事件处理函数后,注意到增加了处理函数的事件,双击函数可以直接进入对话框的源文件(.CPP),并为事件响应函数增加代码。

因为添加的函数全都是空的,所以需要手工添加代码来实现用户想要的功能。在下面的程序中有一个函数UpdateData()出现了两次,其格式为:BOOLUpdateData(BOOLbSaveAndValidate=TRUE);UpdateData函数是MFC中的CWnd类的成员函数,CWnd类是很重要的MFC类,所有窗口类都直接或间接地继承于它。本程序主对话窗口类CJisuanDlg继承了Cdialog,而Cdialog又继承了CWnd,因此可以在程序中使用函数UpdateData。

用户在程序运行过程中通过鼠标或键盘修改了对话框控件的状态后,对话框中与控件相关联的变量值并没有马上更新。以参数TRUE调用函数UpdateData()的作用就是更新所有与对话框图控件相关联的变量值。以TRUE和FALSE作为参数可分别实现控件关联变量的“里传”和“外传”。下面的语句起刷新编辑框的作用。voidCJisuanDlg::OnJia(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(true);//刷新控件的值到对应的变量

m_Result=m_Firnum+m_Secnum; UpdateData(false);//拷贝变量值到控件显示}

各关联变量的初值在程序主对话框类的构造函数中初始化,它是由程序自动生成的。如果想修改某些变量的初值,可以在源程序中找到该函数,修改某些变量的初始值。即模态对话框及其弹出

Windows对话框分为两类:模态对话框和非模态对话框。模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。非模态对话框则是,它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。55565758例2、菜单与画图菜单是一个专业程序不可缺少的程序界面构件,对于不同的程序,这些构件会以不同的面貌出现。菜单是Windows使用者天天都要见到的应用元素。

在单文档界面的应用程序中,添加一个“画图”菜单项包括“画矩形”和“画圆形”,并添加不同的颜色。

第一步:创建一个基于单文档界面的应用程序,将工程命名为caidan

第二步:在“工程管理区”中点击“ResourceView”,在Menu文件夹中选择“IDR_MAINFRAME”,双击菜单中添加一个菜单。

菜单项“画矩形”的ID标识为“ID_RECT”。

菜单项“画圆形”的ID标识为“ID_CIRCLE”。

第三步:为“画图”菜单项添加消息响应函数。最后单击ClassWizard对话框的“确定”按钮来确认添加(或者单击EditCode按钮直接跳到源文件为函数增加实现代码)。两个菜单项的响应函数为:voidCMainFrame::OnRect(){

//TODO:Addyourcommandhandlercodehere(在这里加入命令处理代码) CClientDCdc(this); CBrushbrushNew; CPenpenNew; brushNew.CreateSolidBrush(RGB(255,0,0));

penNew.CreatePen(PS_SOLID,1,RGB(255,0,0)); dc.SelectObject(&brushNew);dc.SelectObject(&penNew); dc.Rectangle(100,100,200,180);}

voidCM

温馨提示

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

评论

0/150

提交评论