vc_3Windows编程基础 vc入门ppt.ppt

上传人:asd****56 文档编号:87452528 上传时间:2023-04-16 格式:PPT 页数:51 大小:493KB
返回 下载 相关 举报
vc_3Windows编程基础 vc入门ppt.ppt_第1页
第1页 / 共51页
vc_3Windows编程基础 vc入门ppt.ppt_第2页
第2页 / 共51页
点击查看更多>>
资源描述

《vc_3Windows编程基础 vc入门ppt.ppt》由会员分享,可在线阅读,更多相关《vc_3Windows编程基础 vc入门ppt.ppt(51页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第3讲讲 Windows编程基础编程基础主要内容主要内容FWindows编程基础编程基础F用用MFC创建创建Windows应用程序应用程序F用用API编写编写Windows应用程序应用程序VC vs.C+vcvc是工具,而是工具,而c+c+是程序设计语言是程序设计语言vcvc是基于是基于c+c+的可视化集成开发环境,拥有的可视化集成开发环境,拥有C+C+编译编译器和器和MFCMFC(微软基础类库)等。微软基础类库)等。c+c+增加了面向对象的功能,以事件驱动程序执行增加了面向对象的功能,以事件驱动程序执行 MFCc+编译器编译器C+C资源资源 资源即数据资源即数据,包含在应用程序的,包含在应

2、用程序的.exeexe文件中,文件中,通常资源留在磁盘上,只有当通常资源留在磁盘上,只有当windowswindows需要某一资需要某一资源时,才将其装入内存中。源时,才将其装入内存中。VC VC中有多种资源,分别是加速键、位图、光中有多种资源,分别是加速键、位图、光标、对话框、图标、菜单、串表、工具条和版本标、对话框、图标、菜单、串表、工具条和版本信息。信息。资源在称为资源在称为“资源描述文件资源描述文件”(.”(.rcrc)的的ASCIIASCII码文件中定义。码文件中定义。VCVC对所有类型的资源都提供了资对所有类型的资源都提供了资源编辑器进行可视化编辑。源编辑器进行可视化编辑。VC+V

3、C+代码编译代码编译;资源编译资源编译WindowsWindows头文件头文件源文件源文件资源描述文件资源描述文件.rcrcMFCMFC头文件头文件运行时头文件运行时头文件编译器编译器objobj文件文件Resource.hResource.h资源编译器资源编译器资源文件资源文件RESRES链接程序链接程序可执行文件可执行文件exeexeWindowsWindows运行库和运行库和MFCMFC库库Visual C+应用程序创建过程应用程序创建过程 Windows操作系统是一个多任务、面向对象的图形操作系统。在Windows操作环境中,Windows应用程序采用“基于消息的事件驱动”运行机制,这

4、是它与过去的面向过程的应用程序机制的不同之处。2.1 Windows编程机制编程机制 n事件驱动程序设计是由事件驱动程序设计是由事件的发生事件的发生来控制来控制。Windows编程基础编程基础 windows windows为运行的应用程序创建消息队列,当相应的为运行的应用程序创建消息队列,当相应的事事件发生件发生后,后,windowswindows将其转换为将其转换为消息消息,然后放入消息队列,然后放入消息队列,应用程序不断地从队列中取出消息,然后根据消息发送到应用程序不断地从队列中取出消息,然后根据消息发送到对应的窗口中执行相应的程序代码。对应的窗口中执行相应的程序代码。键盘消息键盘消息事

5、件事件消消息息队队列列提取消息提取消息处理消息处理消息应用程序应用程序其他消息其他消息鼠标消息鼠标消息 多任务多任务执行环境执行环境窗口:窗口:n由由应应用用程程序序创创建建的的一一个个用用于于接接收收用用户户输输入入和和显显示输出示输出的的矩形区域矩形区域。n由非客户区和客户区组成由非客户区和客户区组成n窗窗 口口 是是 应应 用用 程程 序序 与与 用用 户户 交交 互互 的的 界界 面面。是是windowswindows界面显示的基本单位。界面显示的基本单位。非非客客户户区区由由系系统统绘绘制制,包包括括菜菜单单、工工具具栏栏、最大化按钮等。最大化按钮等。客客户户区区由由应应用用程程序序

6、绘绘制制,用用于于输输出出数数据据和和接接受用户的输入。受用户的输入。基本概念基本概念 编写编写windowswindows应用程序应首先创建一个或多个窗口,随后应用程序应首先创建一个或多个窗口,随后程序的运行过程就是窗口内部、窗口和窗口之间、窗口与系程序的运行过程就是窗口内部、窗口和窗口之间、窗口与系统间进行数据处理和数据交换。统间进行数据处理和数据交换。事件:事件:n单击键盘和鼠标、改变窗口大小和移动窗口单击键盘和鼠标、改变窗口大小和移动窗口计算机通知计算机通知WindowsWindows系统已经发生了一个事件,以系统已经发生了一个事件,以及事件的种类、发生的时间和发生的位置(如坐标及事件

7、的种类、发生的时间和发生的位置(如坐标值)。值)。n事件以如下三种方式产生:事件以如下三种方式产生:通过通过输入设备输入设备,如键盘和鼠标,产生硬件,如键盘和鼠标,产生硬件事件。事件。通过通过屏幕上可视的对象屏幕上可视的对象,如菜单、工具栏,如菜单、工具栏按钮、滚动条和对话框上的控件。按钮、滚动条和对话框上的控件。来自来自WindowsWindows内部内部,例如,系统时钟中断。,例如,系统时钟中断。nWindowsWindows操作环境中,无论是系统产生的动作或是操作环境中,无论是系统产生的动作或是用户运行应用程序产生的动作,都称为用户运行应用程序产生的动作,都称为事件产生的事件产生的消息。

8、消息。nWindowsWindows应用程序利用消息与其他的应用程序利用消息与其他的WindowsWindows应用程应用程序及序及WindowsWindows系统进行信息交换。系统进行信息交换。消息:消息:Windows消息是在消息是在Windows.h文件中用宏定义文件中用宏定义的常数。的常数。消息常数名通常为消息常数名通常为WM开头,格式是:开头,格式是:WM_XXX例如,例如,WM_QUIT、WM_CHAR。例如例如:当用户单击鼠标左键时,将发送当用户单击鼠标左键时,将发送 WM_LBUTTONDOWN消息,消息,而双击则发送而双击则发送WM_LBUTTONDBLCLK消息。消息。消息

9、:消息:WindowsWindows消息类型:消息类型:n标标准准WindowsWindows消消息息:以以WM_ _前前缀缀(但但不不包包括括WM_COMMAND)开开始始的的消消息息,包包括括鼠鼠标标消消息息、键键盘盘消消息息和和窗窗口口消消息息,如如WM_MOVE、WM_PAINT等。由窗口类或视图类处理。等。由窗口类或视图类处理。n控控件件通通知知(Control Notification)消消息息:对对控控件件操操作作引引起起的的消消息息,是是控控件件和和子子窗窗口口向向其其父父窗窗口口发发出出的的WM_COMMAND通通知知消消息息。例例如如,当当用用户户修修改改了了编编辑辑控控件

10、件中中的的文文本本后后,编编辑辑控控件件向向其其父父窗窗口口发发送送WM_COMMANDWM_COMMAND通通知知消消息息。由窗口类或视图类处理。由窗口类或视图类处理。n命命令令(Command)消消息息:由由菜菜单单项项、工工具具栏栏按按钮钮、快快捷捷键键等等用用户户界界面面对对象象发发出出的的WM_COMMAND消消息息。命命令令消消息息与与其其它它消消息息不不同同,它它可可被被更更广广泛的的对象如文档、文档模板、应用程序对象、窗口和视图等处理。泛的的对象如文档、文档模板、应用程序对象、窗口和视图等处理。n自自定定义义消消息息:程程序序员员自自己己定定义义并并在在应应用用程程序序中中主主

11、动动发发出出,一一般般用用于于应应用用程程序的某一部分内部处理。序的某一部分内部处理。typedef struct tagMSG HWND hWnd;/检索消息的窗口句柄,如果检索消息的窗口句柄,如果 /为为NULL,则可以检索所有驻留,则可以检索所有驻留 /在消息队列中的消息在消息队列中的消息 UINT message;/消息标识符消息标识符 WPARAM wParam;/消息参数消息参数1(附加信息,(附加信息,32位)位)LPARAM lParam;/消息参数消息参数2(附加信息,(附加信息,32位)位)DWORD time;/消息发送时间消息发送时间 POINT pt;/消息发送时鼠标

12、的屏幕坐标消息发送时鼠标的屏幕坐标 MSG;消息的数据结构消息的数据结构MSGMSG定义如下:定义如下:在在windowswindows程序中程序中,管理消息的方式通常是这样的管理消息的方式通常是这样的:当产生某个消息时当产生某个消息时,该消息进入消息队列该消息进入消息队列,操作系操作系统根据消息提供的统根据消息提供的消息标识符消息标识符决定由哪个应用程序来决定由哪个应用程序来处理处理,该应用程序依照一定的方式查找应用程序中各个该应用程序依照一定的方式查找应用程序中各个类的类的消息映射消息映射(一组宏一组宏,这些宏用来这些宏用来确定某个消息及相确定某个消息及相应的处理程序的对应关系应的处理程序

13、的对应关系),),找到处理程序找到处理程序,然后由处理然后由处理程序执行相应的操作。程序执行相应的操作。v消息响应函数是用于处理特定消息的一些代码。消息响应函数是用于处理特定消息的一些代码。常用消息常用消息nWM_LBUTTONWM_LBUTTONDOWNDOWN:单击鼠标左键时产生的消息单击鼠标左键时产生的消息nWM_LBUTTONWM_LBUTTONUPUP:放开鼠标左键时产生的消息放开鼠标左键时产生的消息nWM_LBUTTONWM_LBUTTONDBLCLKDBLCLK:双击鼠标左键时产生的消息双击鼠标左键时产生的消息nWM_KEYDOWNWM_KEYDOWN:按下一个非系统键时产生的消

14、息,附加按下一个非系统键时产生的消息,附加消息参数消息参数wParamwParam为按下键的虚拟键码,虚拟键码用以为按下键的虚拟键码,虚拟键码用以标识按下或释放的键,标识按下或释放的键,lParamlParam记录按键的重复次数、记录按键的重复次数、扫描码等状态信息扫描码等状态信息nWM_CHARWM_CHAR:按下一个非系统键时产生的消息,附加信息按下一个非系统键时产生的消息,附加信息参数参数wParamwParam为按下键为按下键ASCIIASCII码,码,lParamlParam的意思同上的意思同上常用消息常用消息nWM_CREATEWM_CREATE:创建窗口时产生的消息创建窗口时产生

15、的消息nWM_CLOSEWM_CLOSE:关闭窗口时产生的消息关闭窗口时产生的消息nWM_DESTROYWM_DESTROY:消除窗口时发出的消息消除窗口时发出的消息nWM_QUITWM_QUIT:退出应用程序时发出的消息退出应用程序时发出的消息nWM_PAITWM_PAIT:Windows:Windows系统需要重绘时产生的消系统需要重绘时产生的消息息Windows编程中的常用基本数据结构编程中的常用基本数据结构数据结构数据结构描述描述MSG应用程序消息的结构应用程序消息的结构WNDCLASS定义窗口类定义窗口类RECT定义矩形定义矩形POINT定义点定义点新的数据类型新的数据类型n最初是为

16、了便于将最初是为了便于将windowswindows程序从原来的程序从原来的1616位位系统上移植到基于系统上移植到基于3232位的操作系统上。位的操作系统上。n有些新的数据类型只是为了方便起见而使用的有些新的数据类型只是为了方便起见而使用的一个缩写。一个缩写。egeg:UINT-UINT-unsingedunsinged intint;PSTR-Point to StringPSTR-Point to Stringn有些数据类型含义不是很明显,常使初学者感有些数据类型含义不是很明显,常使初学者感到困惑不解。到困惑不解。nMSDN/Platform SDK/Win32 MSDN/Platfor

17、m SDK/Win32 API/Reference/Data TypesAPI/Reference/Data Typesnc-char/WCHAR/TCHARnby-BYTE(无符号字符无符号字符);nn-short;i-int;l-long;b-boolnw-WORD(无符号无符号short);ndw-DWORD(无符号长整型无符号长整型);ns-string;sz-string ended winth zeronh-handle;p-pointer;fn-functionncb-count of bytesnlpfn-long pointer to function(指向函数(指向函数的长

18、指针)的长指针)匈牙利命名法匈牙利命名法windows常用变量前缀常用变量前缀句柄句柄 n句柄(句柄(HandleHandle)就是就是WindowsWindows使用的一种无重复的使用的一种无重复的整数。主要用来标识应用程序中不同的对象和同整数。主要用来标识应用程序中不同的对象和同类对象中不同的实例。通过句柄可以获得相应的类对象中不同的实例。通过句柄可以获得相应的对象信息。对象信息。n句柄常作为句柄常作为WindowsWindows消息和消息和APIAPI函数的参数,在采函数的参数,在采用用APIAPI方法编写方法编写WindowsWindows应用程序时要经常使用句应用程序时要经常使用句柄

19、。而采用柄。而采用MFCMFC方法编写方法编写WindowsWindows应用程序时,由应用程序时,由于对应的于对应的MFCMFC类已对句柄进行了封装,大多数情况类已对句柄进行了封装,大多数情况下不再需要访问句柄。下不再需要访问句柄。句柄:句柄:类型类型含义含义类型类型含义含义HANDLE通用对象句柄通用对象句柄HCURSOR鼠标光标句柄鼠标光标句柄HWND窗口对象句柄窗口对象句柄HBRUSH刷子句柄刷子句柄HDC设备描述表句柄设备描述表句柄HPEN画笔句柄画笔句柄HMENU菜单句柄菜单句柄HFONT字体对象句柄字体对象句柄HICON图标句柄图标句柄HINSTANCE应用程序的实应用程序的实例

20、句柄例句柄nAPIAPI(Application Programming Interface)(Application Programming Interface)应用程序接口应用程序接口:是:是WindowsWindows操作系统与应用程序之操作系统与应用程序之间的标准接口,它提供了上千个标准函数、宏和数间的标准接口,它提供了上千个标准函数、宏和数据结构的定义。据结构的定义。大多数大多数APIAPI函数定义在函数定义在Windows.hWindows.h的文件中,也的文件中,也可以从可以从WindowsWindows平台软件开发包平台软件开发包(SDK)(SDK)中得到它。中得到它。nWin

21、dows Windows APIAPI函函数数定定义义在在一一些些DLLDLL动动态态链链接接库库中中,其其 中中 最最 主主 要要 的的 DLLDLL是是 User32.dllUser32.dll、Gdi32.dllGdi32.dll和和Kernel32.dllKernel32.dll三个库文件。三个库文件。API编程编程n一一个个由由APIAPI函函数数构构造造的的WindowsWindows程程序序的的功功能能由由三三个个部部分组成:分组成:入口函数、窗口函数和入口函数、窗口函数和WindowsWindows系统。系统。n每每一一个个程程序序都都有有一一个个主主函函数数,WinMainW

22、inMain()()函函数数就就是是WindowsWindows程程序序的的入入口口主主函函数数。完完成成一一系系列列的的定定义义和和初始化工作,并产生消息循环。初始化工作,并产生消息循环。nWindowsWindows程程序序以以窗窗口口的的形形式式存存在在,在在不不同同窗窗口口之之间间传传递递消消息息是是WindowsWindows和和应应用用程程序序进进行行交交流流的的主主要要形形式式。程程序序具具体体功功能能由由不不同同的的窗窗口口函函数数实实现现。窗窗口口函函数是应用程序处理接收到的消息的函数。数是应用程序处理接收到的消息的函数。Win32程序的基本结构程序的基本结构Win32源程序

23、的组成源程序的组成nWin32程序由入口函数程序由入口函数WinMain()和消息处理函和消息处理函数数WndProc()组成。组成。1.WinMain函数函数功能:功能:n注册窗口类,建立窗口及执行其他必要初始化工作。注册窗口类,建立窗口及执行其他必要初始化工作。n进入消息循环,根据从消息队列中接收的消息,调用相进入消息循环,根据从消息队列中接收的消息,调用相应的处理过程。应的处理过程。n当消息循环检索到当消息循环检索到WM_QUITWM_QUIT消息时,终止程序的执行消息时,终止程序的执行。WinMain函数的组成函数的组成Winmain函数函数函数说明函数说明初始化初始化消息循环消息循环

24、窗口类的定义窗口类的定义注册窗口类注册窗口类RegisterClass()创建窗口类创建窗口类CreatWindow()显示窗口类显示窗口类ShowWindow()UpdateWindow()1)函数声明:)函数声明:int WINAPI WinMain(HINSTANCE hInstance,/应用程序当前实例句柄应用程序当前实例句柄HINSTANCE hPrevInst,/应用程序其它实例句柄应用程序其它实例句柄LPSTR lpszCmdLine,/指向程序命令行参数的指针指向程序命令行参数的指针int nCmdShow/应用程序开始执行时窗口显示方式的整数值标识应用程序开始执行时窗口显示

25、方式的整数值标识)2)初始化初始化 包括窗口类的定义、注册、创建窗口实例和显包括窗口类的定义、注册、创建窗口实例和显示窗口。示窗口。需要注意的是,窗口类必须先注册后使用。需要注意的是,窗口类必须先注册后使用。在显示窗口在显示窗口ShowWindow函数后,需要调用函数后,需要调用UpdateWindow函数更新并绘制用户区,并发函数更新并绘制用户区,并发出出WM_PAINT消息。消息。nRegisterClass(&wndclass);参数为窗口类结);参数为窗口类结构,注册成功则返回值为真。构,注册成功则返回值为真。nHWND CreateWindow(LPCTSTR lpszClassNa

26、me,/窗口类名窗口类名 LPCTSTR lpszTitle,/窗口标题名窗口标题名 DWORD dwStyle,/创建窗口的样式创建窗口的样式 int x,int y,/窗口左上角坐标窗口左上角坐标 int nWidth,int nHeight,/窗口宽度,高度窗口宽度,高度 HWND hwndParent,/窗口的父窗口句柄窗口的父窗口句柄 HMENU hMenu,/窗口主菜单句柄窗口主菜单句柄 HINSTANCE hInstance,/创建窗口的应用程序当前句柄创建窗口的应用程序当前句柄 LPVOID lpParam/指向一个传递给窗口的参数值的指针指向一个传递给窗口的参数值的指针 )n

27、BOOL ShowWindow(HWND hwnd,/窗口句柄int nCmdShow/窗口显示形式标识窗口显示形式标识);nUpdateWindow(HWND hwnd)3)消息循环)消息循环 while(GetMessage(&msg,NULL,0,0)/将原始键盘消息的虚拟键转换成字符消息将原始键盘消息的虚拟键转换成字符消息TranslateMessage(&msg);/确定应用程序中应该得到消息的窗口,并将消确定应用程序中应该得到消息的窗口,并将消息发送给它息发送给它DispatchMessage(&msg);2.2.窗口处理函数窗口处理函数n窗口处理函数是用于处理特定消息的一些代码。

28、窗口处理函数是用于处理特定消息的一些代码。LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)switch(message)case WM_DESTROY:PostQuitMessage(0);default:return DefWindowProc(hwnd,message,wparam,lparam);return 0;Windows程序和程序和windows消息的基本流程消息的基本流程WIN32 API程序执行流程程序执行流程注册窗口类注册窗口类RegisterClass创建主窗口创建主窗

29、口CreateWindow显示主窗口显示主窗口显示主窗口显示主窗口ShowWindowUpdateWindow程序入口点程序入口点WinMain()消息循环消息循环捕获消息捕获消息GetMessageTranslateMessageDispatchMessage处理消息处理消息窗口函数窗口函数程序出口点程序出口点(WinMain返回返回)WNDCLASS:-包含窗口类的全部信息包含窗口类的全部信息typedef struct tagWNDCLASSWNDCLASSUNIT style;/窗口样式,一般为窗口样式,一般为0WNDPROC lpfWndProc;/指向窗口函数的指针指向窗口函数的指

30、针int cbClsExtra;/分配在窗口类结构后的字节数分配在窗口类结构后的字节数int cbWndExtra;/分配在窗口实例后的字节数分配在窗口实例后的字节数HINSTANCE hinstance;/窗口类应用程序实例句柄窗口类应用程序实例句柄HICON hIcon;/窗口类的图标窗口类的图标HCURSOR hCursor;/窗口类的光标窗口类的光标HBRUSH hbrBackground;/窗口类的背景刷窗口类的背景刷HPCSTR hpszMenuName;/窗口类菜单资源名窗口类菜单资源名HPCSTR hpszClassName;/窗口类名窗口类名例例1 1:应应用用程程序序窗窗口

31、口示示例例。目目的的在在于于说说明明创创建建windowswindows窗口的方法及过程窗口的方法及过程LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)switch(message)case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd,message,wParam,lParam);return 0;int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE

32、 hPrevInstance,LPSTR szCmdLine,int nCmdShow)WNDCLASS wndclass;/定义窗口类定义窗口类MSG msg;/定义消息数据结构定义消息数据结构 char lpszClassName=“窗口窗口”;char lpszTitle=“My_window”;/初始化窗口类初始化窗口类wndclass.style=0;/窗口为默认类型窗口为默认类型wndclass.lpfnWndProc=WndProc;/窗口函数为窗口函数为WndProcwndclass.cbClsExtra=0;/窗口类无扩展窗口类无扩展wndclass.cbWndExtra=0

33、;/窗口实例无扩展窗口实例无扩展wndclass.hInstance=hInstance;/当前实例句柄当前实例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wndclass.lpszMenuName=NULL;/窗口中无菜单窗口中无菜单wndclass.lpszClassName=lpszClassName;/窗口类名窗口类名/注册窗口类注

34、册窗口类if(!RegisterClass(&wndclass)MessageBeep(0);return 0;/创建窗口创建窗口HWND hwndMain=CreateWindow(lpszClassName,lpszTitle,WS_POPUP|WS_OVERLAPPEDWINDOW,0,0,500,500,NULL,/此窗口无父窗口此窗口无父窗口NULL,/此窗口无主菜单此窗口无主菜单hInstance,NULL);/不适用该值不适用该值 ShowWindow(hwndMain,nCmdShow);/显示窗口显示窗口UpdateWindow(hwndMain);/绘制用户区绘制用户区wh

35、ile(GetMessage(&msg,NULL,0,0)/消息循环消息循环TranslateMessage(&msg);DispatchMessage(&msg);return true;n传传统统SDKSDK编编程程:程程序序员员通通过过调调用用APIAPI函函数数,自自己己动动手手、按按部部就就班班地地实实现现程程序序各各部部分分的的功功能能。SDKSDK应应用用程程序序的的结结构构比比较较清清晰晰,但但程程序序员员必必须须编编写写所所有有的功能代码。的功能代码。n利利用用Visual Visual C+C+编编写写一一个个类类SDKSDK应应用用程程序序:首首先先利利用用Win32 W

36、in32 ApplicationApplication向向导导建建立立一一个个WindowsWindows应应用用程程序序框框架架,然然后后根根据据需需要要可可以以向向程程序序项项目目中中添添加加一一些些头头文文件件、实实现现源源文文件件和和资资源源文文件件,并并编编写写具体的程序代码。具体的程序代码。MFC编程编程微软基础类库微软基础类库(Microsoft Foundation Class,MFC)-封装:封装了封装:封装了windows API-类库:类库:MFCMFC是一个庞大的类库是一个庞大的类库,扩展了扩展了C+C+的类结构的类结构-文档文档/视图模型:使应用程序和界面元素相分离视

37、图模型:使应用程序和界面元素相分离 文档:维护、管理数据。如数据的读取、修改、存储文档:维护、管理数据。如数据的读取、修改、存储 视图:接收并显示数据,将数据处理交给文档视图:接收并显示数据,将数据处理交给文档-消息映射机制:自动处理消息,将消息映射机制:自动处理消息,将windowswindows消息映射消息映射到一个成员函数进行处理,简化消息处理方式。到一个成员函数进行处理,简化消息处理方式。nMFCMFC的框架结构提供如下的框架结构提供如下优点优点:MFC的层次结构的层次结构绝大部分类派生自基类绝大部分类派生自基类CobjectCobject(VC(VC中类均以中类均以C C开头开头)。

38、少部分非少部分非CobjectCobject派生类主要被用作封装派生类主要被用作封装WindowsWindows的的数据结构或对数据结构或对MFCMFC库特定属性进行支持。库特定属性进行支持。MFCMFC不仅仅是一个类库,它还提供了一层建立在不仅仅是一个类库,它还提供了一层建立在WindwosWindwos API API的的C+C+封装基础之上的附加封装基础之上的附加应用程序框架应用程序框架。该框架提供了该框架提供了WindowsWindows程序所需要的多数程序所需要的多数公共公共用户界面。用户界面。CObject的主要派生类的主要派生类窗口类窗口类 窗口类又可以划分为框架窗口、视图窗口、

39、对话窗口类又可以划分为框架窗口、视图窗口、对话框、控件四个类别。框、控件四个类别。类名类名说明说明CWnd通用窗口类通用窗口类CFrameWnd单文档应用程序的主框架窗口单文档应用程序的主框架窗口CMDIFrameWnd多文档应用程序的主框架窗口多文档应用程序的主框架窗口CView视图类的基类视图类的基类CDialog对话框类的基类对话框类的基类应用程序类应用程序类-CWinApp:应用程序类,提供程序的初始化等功能应用程序类,提供程序的初始化等功能-Cdocument:文档类,保存应用程序数据,并提供磁文档类,保存应用程序数据,并提供磁盘文件操作;盘文件操作;文档类文档类图形类图形类-设备环

40、境类:完成对设备环境类:完成对windows设备环境的封装设备环境的封装-图形设备类:用于绘图的类,如画笔、字体、画刷图形设备类:用于绘图的类,如画笔、字体、画刷Windows应用程序类型应用程序类型 n用用Visual C+创建创建MFC程序的典型结构程序的典型结构一共有三种:一共有三种:n基于单文档的应用程序基于单文档的应用程序n基于多文档的应用程序基于多文档的应用程序n基于对话框的应用程序基于对话框的应用程序 同同一一类类型型应应用用程程序序的的结结构构大大致致相相同同,并并有有很很多多相相同同的的源源代代码码,因因此此可可以以通通过过一一个个应应用用程程序序框框架架AFX(Applic

41、ation FrameWorks)编编写写同同一一类型应用程序的类型应用程序的通用源代码通用源代码。何谓应用程序框架?何谓应用程序框架?nVisual C+提提供供了了创创建建应应用用程程序序框框架架的的向向导导AppWizard和相关的开发工具。和相关的开发工具。n在在可可视视化化开开发发环环境境下下,生生成成一一个个应应用用程程序序要要做做的的工工作作主主要要包包括括编编写写源源代代码码、添添加加资资源源和和设设置置编编译译方方式式。向向导导实实质质上上是是一一个个源源代代码码生生成成器器,利利用用应应用用程程序序向向导导可可以以快快速速创创建建各各种种风风格格的的应应用用程程序序框框架架

42、,自自动动生生成成程程序序通通用用的的源源代代码码,这这样样大大大大减减轻轻了手工编写代码的工作量。了手工编写代码的工作量。n即即使使不不非非常常熟熟悉悉Visual C+编编程程,也也可可以以利利用用它它的的应用程序向导应用程序向导一个简单的应用程序。一个简单的应用程序。主要向导类型主要向导类型nDatebase Project:创建数据库项目nMFC ActiveX Control Wizard:创建基于MFC的ActiveX控件nMFC AppWizarddll:创建基于MFC的动态链接库nMFC AppWizardexe:创建基于创建基于MFC的应用程序(最常用)的应用程序(最常用)n

43、New Database Wizard:在SQL服务器上创建一个SQL Server数据库nWin32 Application:创建创建Win32应用程序,可不使用应用程序,可不使用MFC,采用采用SDK方法编程方法编程nWin32 Console Application:创建创建DOS下的下的Win32控制台控制台应用程序,采用应用程序,采用C+或或C语言进行编程语言进行编程nWin32 Dynamic-link Library:创建Win32动态链接库,采用 SDK方法nWin32 Static Library:创建Win32静态链接库,采用SDK方法n根根据据应应用用程程序序特特性性在在

44、MFC MFC AppWizardexeAppWizardexe应应用用程程序序向向导导各各步骤对话框中进行选择,创建一个应用程序的框架。步骤对话框中进行选择,创建一个应用程序的框架。n利利用用资资源源编编辑辑器器为为程程序序编编辑辑或或添添加加资资源源,如如编编辑辑菜菜单单、添添加对话框等。加对话框等。n利利用用ClassWizardClassWizard类类向向导导或或手手工工添添加加类类、成成员员变变量量和和成成员员函数的声明。函数的声明。n根据需要编写具体的函数代码。根据需要编写具体的函数代码。n编编译译、链链接接程程序序。如如果果程程序序有有语语法法错错误误,需需要要修修改改源源程程

45、序序。直到没有编译、链接错误,才能得到可执行程序。直到没有编译、链接错误,才能得到可执行程序。n测测试试应应用用程程序序各各项项功功能能,如如果果程程序序没没有有实实现现程程序序设设计计所所要要求求的的功功能能,启启动动DebugDebug调调试试器器进进行行调调试试,找找出出并并修修改改程程序序设计中的逻辑错误。设计中的逻辑错误。编写一个实现具体功能的编写一个实现具体功能的MFC应用程序的步骤:应用程序的步骤:n在在MFC应用程序的应用程序的CWinApp派生类对象派生类对象theApp是一个全局是一个全局变量,变量,代表了应用程序运行的主线程代表了应用程序运行的主线程。它在程序整个运行期。

46、它在程序整个运行期间都存在,它的销毁意味着运行程序的消亡。间都存在,它的销毁意味着运行程序的消亡。nMFC应用程序启动时,首先应用程序启动时,首先创建创建应用程序对象应用程序对象theApp,这时这时将自动调用应用程序类的构造函数将自动调用应用程序类的构造函数初始化初始化对象对象theApp,然后然后由应用程序框架调用由应用程序框架调用MFC提供的提供的AfxWinMain()主函数。主函数。nAfxWinMain()主函数首先通过调用全局函数主函数首先通过调用全局函数AfxGetApp()获取应用程序对象获取应用程序对象theApp的指针的指针pApp,然后通过然后通过pApp调用调用应用程序对象的有关成员函数,完成程序的初始化和启动工应用程序对象的有关成员函数,完成程序的初始化和启动工作,最后调用成员函数作,最后调用成员函数Run(),进入消息循环。进入消息循环。n程序运行后将收到程序运行后将收到WM_PAINT消息,调用消息,调用OnPaint()函数绘函数绘制客户区窗口。如果制客户区窗口。如果Run()收到收到WM_QUIT消息,则结束消消息,则结束消息循环,然后调用函数息循环,然后调用函数ExitInstance(),结束程序运行。结束程序运行。MFC应用程序的生与死应用程序的生与死

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com