《Windows程序设计初步.ppt》由会员分享,可在线阅读,更多相关《Windows程序设计初步.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Windows 程序设计初步一一.Windows.Windows 系统的特征系统的特征n标准的用户界面标准的用户界面n多任务多任务n设备独立性设备独立性n动态链接动态链接n强大的内存管理强大的内存管理二二.基本术语基本术语uu窗口窗口(window)由句柄唯一标识由句柄唯一标识uu对话框对话框(Dialog)人机交互人机交互uu图标图标(Icon)代表某项操作或程序的图符代表某项操作或程序的图符uu位图位图(Bitmap)用位模式形成的图像用位模式形成的图像uu菜单菜单(Menu)命令命令uu工具栏工具栏(ToolBar)常用的菜单项常用的菜单项 uu状态栏状态栏(StateBar)操作状态或
2、操作提示操作状态或操作提示二二.基本术语基本术语(续续)句柄句柄:用来标识资源的用来标识资源的32位无符号整数位无符号整数rrHANDLE 一般句柄一般句柄rrHINSTANCE 实例句柄实例句柄rrHWND 窗口句柄窗口句柄rrHMENU 菜单句柄菜单句柄rrHICON 图标句柄图标句柄rrHCURSOR 光标句柄光标句柄rrHBITMAP 位图句柄位图句柄三三.Windows 编程的特点编程的特点1.消息驱动体系消息驱动体系DOS 编程方式属过程驱动。编程方式属过程驱动。Windows 编程方式属消息驱动编程方式属消息驱动(程序的工作是产生消息,传(程序的工作是产生消息,传递消息和处理消息
3、)。递消息和处理消息)。过程过程1 1开始开始过程过程2 2.过程过程n n结束结束过程驱动编程模型过程驱动编程模型过程驱动编程模型过程驱动编程模型消息消息消息消息处理处理处理处理事件事件1事件事件2事件事件3.事件事件n开始开始开始开始结束结束结束结束事件驱动编程模型事件驱动编程模型事件驱动编程模型事件驱动编程模型事件事件 事件是对计算机操作的动作事件是对计算机操作的动作。每个事件对应一个消息,即。每个事件对应一个消息,即每个事件发生的效果是产生消每个事件发生的效果是产生消息。息。消息消息l消息的功能:消息的功能:(1)帮助帮助Windows实现多任务实现多任务(2)通知应用程序某一事件已通
4、知应用程序某一事件已经发生,各应用程序给予响应经发生,各应用程序给予响应l消息的表示消息的表示消息本身内容消息本身内容UINT message 32位无符号整数位无符号整数附加信息附加信息WPARAM wParamLPARAM lParaml消息的定义消息的定义typedef struct tagMSG HWND hwnd;/接收窗口接收窗口接收窗口接收窗口 UINT message;/消息标识消息标识消息标识消息标识 WPARAM wParam;/附加附加附加附加 LPARAM lParam;/附加附加附加附加 DWORD time;/入队时间入队时间入队时间入队时间 POINT pt;/光
5、标位置光标位置光标位置光标位置 MSG;/vcincludewtypes.hl消息的种类消息的种类 vcincludewinuser.hl l标准标准标准标准WindowsWindows消息消息消息消息除除WM_COMMAND外,所有以外,所有以WM_ 为前缀的消息,由窗口和视图处理。为前缀的消息,由窗口和视图处理。l l控制消息控制消息控制消息控制消息由控件和子窗口发给父窗口的消息。由控件和子窗口发给父窗口的消息。l l命令消息命令消息命令消息命令消息来自用户接口对象。如:菜单、工具来自用户接口对象。如:菜单、工具条和加速键等。条和加速键等。l标标准准的的Windows消消息息可可以以分分为
6、为三三类类,即即键键盘盘消消息息、鼠标消息和窗口消息。下面分别加以说明。鼠标消息和窗口消息。下面分别加以说明。键盘消息l当当键键盘盘的的某某个个键键被被按按下下时时,将将产产生生WM_CHAR消消息息,这这个个消消息息带带有有字字符符代代码码值值、重重复复次次数数和和先先前前状状态态码码三三个个参参数数。WM_CHAR消消息息的的处处理理函函数数为为OnChar(),此函数的原型为:此函数的原型为:lafx_msgvoidOnchar(UINTnChar,UINTnRepCnt,UINTnFlags);l其中:其中:nChar是所按键的字符代码值;是所按键的字符代码值;lnRepCnt是是重重
7、复复的的次次数数,它它表表示示用用户户按按键键时时重重复复击击键的次数;键的次数;lnFlags表表示示扫扫描描码码、先先前前键键状状态态和和键键转转换换状状态态等等,其参数值功能描述见表其参数值功能描述见表4.1所示。所示。位含 义015指明键重复按下的次数1623指定扫描码,依赖于具体厂家的按键值24如果同时按下扩展键(如功能键Alt、Ctrl),则置为1,否则置为02528由Windows内部使用29若同时按下了Alt键,则置为1,否则置为030指明先前键状态。若消息发出前键是按下的,则置为1,否则置为031指明键转换状态。若按键已松开,则置为1,否则置为0表1 nFlags参数值功能描
8、述 鼠标消息l在在Windows中处理鼠标的操作基本上有三种:中处理鼠标的操作基本上有三种:1.单单击击(Click)2.双双击击(Double Click)3.拖拖动动(Drag)2.所所有有这这些些鼠鼠标标的的操操作作,都都会会产产生生相相应应的的消消息息。鼠鼠标标移移动动时时产产生生WM_MOUSEMOVE消消息息,鼠鼠标标左左键键按按下下时时产产生生WM_LBUTTONDOWN消消息息,鼠鼠标标右右键键按按下下时时产产生生WM_RBUTTONDOWN消消 息息,鼠鼠 标标 左左 键键 双双 击击 时时 产产 生生WM_LBOTTONDBLCLK消息等等。消息等等。l所有这些鼠标消息的处
9、理函数都有相似的原型,所有这些鼠标消息的处理函数都有相似的原型,它们都有两个参数。我们以处理鼠标左键按下的消息它们都有两个参数。我们以处理鼠标左键按下的消息函函数数OnLButtonDown()为例来进行说明。此函数的原型为例来进行说明。此函数的原型如下:如下:lafx_msgvoidOnLButtonDown(UINTnFlags,Cpointpoint);l其其中中:参参数数point是是鼠鼠标标事事件件发发生生时时鼠鼠标标光光标标所所在在的的位位置置,它它是是相相对对于于窗窗口口左左上上角角的的水水平平坐坐标标和和垂垂直直坐坐标标而而言言的。的。l参数参数nFlag指明鼠标按钮的状态以及
10、鼠标事件发生时键盘指明鼠标按钮的状态以及鼠标事件发生时键盘上某些键的状态,每一状态都可以由上某些键的状态,每一状态都可以由nFlag的一位来表示。的一位来表示。我们可以从表我们可以从表4.2中所列的位屏蔽中得到每一位。中所列的位屏蔽中得到每一位。l4.2nFlags参数每位的含义参数每位的含义l其中,其中,MK_CONTROL、MK_LBUTTON、MK_MBUTTON、MK_MBUTTON、MK_RBUTTON和和MK_SHIFT都是预定义的宏。都是预定义的宏。位屏蔽含 义MK_CONTROLCtrl键按下时设置MK_LBUTTON鼠标左键按下时设置MK_MBUTTON鼠标中间键按下时设置M
11、K_RBUTTON鼠标右键按下时设置MK_SHIFTShift键按下时设置 窗口消息l所所有有窗窗口口的的变变化化,包包括括窗窗口口内内容容重重绘绘WM_PAINT、窗窗 口口 最最 大大 化化 WM_MAXIMIZE、窗窗 口口 最最 小小 化化WM_MINIMIZE、窗窗口口重重定定义义大大小小WM_RESIZE、窗窗口口滚滚动动WM_HSCROLL、WM_VSCROLL、窗窗口口定定时时WM_TIMER等消息所带参数各不相同。等消息所带参数各不相同。l在在这这里里我我们们来来详详细细讨讨论论一一下下WM_PAINT消消息息。当当调调用用成成员员函函数数UpdateWindow()或或Re
12、drawWindow()要要 求求 重重 新新 绘绘 制制 窗窗 口口 内内 容容 时时,应应 用用 程程 序序 将将 收收 到到WM_PAINT消消息息。当当窗窗口口最最小小化化后后再再还还原原或或被被其其他他窗窗口口遮遮盖盖后后又又重重新新显显示示时时,则则当当前前窗窗口口中中的的内内容容必必须须重重新绘制,消息新绘制,消息WM_PAINT就是为实现这个功能的。就是为实现这个功能的。ll当当向向Windows应应用用程程序序发发送送WM_PAINT消消息息,应应用用程程序序检检索索到到此此消消息息后后,就就重重新新显显示示窗窗口口中中的的内内容容。WM_PAINT消息的处理函数为消息的处理
13、函数为OnPaint()。l函数原型为:函数原型为:lafx_msgvoidOnPaint();l如如果果想想详详细细了了解解所所有有的的标标准准的的Windows消消息息,可可以以参参阅阅VisualC+6.0联机帮助中的有关内容。联机帮助中的有关内容。l4.4.2 控件消息l控控件件是是一一个个小小的的子子窗窗口口,属属于于其其他他窗窗口口(如如对对话话框框等等),能能够够接接受受操操作作并并象象父父窗窗口口发发送送消消息息。常常见见的的控控件件有有按按钮、列表框、编辑框、复合框、滚动条等。钮、列表框、编辑框、复合框、滚动条等。l在在VisualC+6.0中中,对对控控件件的的操操作作都都
14、是是通通过过生生成成相相应应的的控控件件类类来来进进行行。这这些些控控件件类类仅仅能能发发送送少少量量特特定定的的消消息息,这这些些消消息息就就叫叫做做控控件件消消息息。发发送送控控件件消消息息的的控控件件在在VisualC+中中l使用唯一使用唯一ID号来进行标识,使用控件类来操纵。号来进行标识,使用控件类来操纵。l控件消息分为两类:控件消息分为两类:l1.从从控控件件传传给给消消息息,通通常常这这类类消消息息的的前前缀缀的的最最后后一一个个字符为字符为N;l2.由由系系统统发发送送给给控控件件的的消消息息,这这类类消消息息的的前前缀缀的的最最后后一个字符为一个字符为M。l例例如如,当当用用户
15、户对对编编辑辑框框中中的的文文本本进进行行修修改改时时,编编辑辑框框将将发发送送给给父父窗窗口口一一条条包包含含控控件件通通知知码码EN_CHANGE的的WM_COMMAND消消息息。窗窗口口的的消消息息处处理理函函数数将将以以某某种种适适当当的的方方式式对对通通知知消消息息作作出出响响应应,如如检检索索编编辑辑框框中中的的文本。文本。l与与其其他他标标准准的的Windows消消息息一一样样,控控件件消消息息也也是是由由窗窗口对象和视图对象进行处理。口对象和视图对象进行处理。l命令消息l命令消息主要包括由用户界面对象发送的命令消息主要包括由用户界面对象发送的M_COMMAND消息,用户界面对象
16、是指菜单、工具栏、消息,用户界面对象是指菜单、工具栏、快捷键等。它和控件消息的区别在于:控件消息只能快捷键等。它和控件消息的区别在于:控件消息只能由特定控件向由特定控件向Windows系统传送,而命令消息是由用系统传送,而命令消息是由用户界面发送的,它可以被更多的对象处理。在文档对户界面发送的,它可以被更多的对象处理。在文档对象、视图对象、窗体对象、控件对象中都能处理这种象、视图对象、窗体对象、控件对象中都能处理这种消息。消息。l1.用户界面对象用户界面对象l菜单、工具栏、快捷键等都是可以产生命令的用户菜单、工具栏、快捷键等都是可以产生命令的用户界面对象。每个这样的对象都分配了一个界面对象。每
17、个这样的对象都分配了一个ID号,通过号,通过给对象和命令分配同一个给对象和命令分配同一个ID号,将用户界面对象和命号,将用户界面对象和命令联系在一起。例如,选择程序中的令联系在一起。例如,选择程序中的【文件文件】菜单下菜单下的的【打开打开】菜单项,则产生一条菜单项,则产生一条ID_FILE_OPEN命令,命令,然后通过消息映射调用函数然后通过消息映射调用函数OnFileOpen()()来进行处来进行处理。理。l2.命令IDl在在MFC编程中,命令完全由命令编程中,命令完全由命令ID来进行描述,命令来进行描述,命令ID分配给产生此命令的用户界面对象。通常情况下,命分配给产生此命令的用户界面对象。
18、通常情况下,命令令ID是由它所表示的用户界面对象的功能来命名的。是由它所表示的用户界面对象的功能来命名的。MFC预定义了一些命令预定义了一些命令ID,如,如ID_EDIT_CUT、ID_FILE_SAVE等,而其他命令等,而其他命令ID则要由编程人员自己则要由编程人员自己定义。定义。l3.命令目标l当用户界面对象被单击后,将调用处理函数来执行所当用户界面对象被单击后,将调用处理函数来执行所产生的命令。产生的命令。Windows把非命令消息的消息直接发送给把非命令消息的消息直接发送给窗口,窗口中用于处理这些消息的处理函数将被调用。窗口,窗口中用于处理这些消息的处理函数将被调用。而对于命令消息,将
19、把命令发送给多个目标,也就是命而对于命令消息,将把命令发送给多个目标,也就是命令目标,其中通常有一个要调用此命令的处理函数。令目标,其中通常有一个要调用此命令的处理函数。l消息的产生消息的产生q 用户产生消息用户产生消息q Windows 本身产生消息本身产生消息q 应用程序本身产生消息应用程序本身产生消息q 其他应用程序产生消息其他应用程序产生消息l消息的传递消息的传递 Windows系统有一个存放消息的队列,每系统有一个存放消息的队列,每个应用程序也有一个消息队列。个应用程序也有一个消息队列。Windows系统先将收到的消息存放在系统队列中;系统先将收到的消息存放在系统队列中;然后再分发到
20、相应的应用程序队列中。应然后再分发到相应的应用程序队列中。应用程序则从自身的队列中获取消息并进行用程序则从自身的队列中获取消息并进行处理。处理。事件事件事件事件事件事件系统消息队列系统消息队列应用程序队列应用程序队列应用程序队列应用程序队列应用程序队列应用程序队列应用程序应用程序应用程序应用程序应用程序应用程序l消息的处理消息的处理l每个窗口对应一个窗口函数,负责每个窗口对应一个窗口函数,负责处理该窗口的所有消息处理该窗口的所有消息.l窗口函数具有窗口函数具有4个参数个参数:HWND 型型 窗口句柄窗口句柄:UINT 型型 消息内容消息内容:WPARAM 型型 附加信息附加信息:LPARAM
21、型型 附加信息附加信息2.窗口窗口 通常每个通常每个Windows 应用程序至少应用程序至少对应一个窗口,每个窗口都要有对应一个窗口,每个窗口都要有一个一个窗口函数窗口函数负责处理该窗口内负责处理该窗口内所发生的事件。所发生的事件。3.Windows 应用程序接口应用程序接口(Application Programming Interface)API 是由是由Windows操作系统提供的操作系统提供的函数定义、参数定义和消息格式的函数定义、参数定义和消息格式的集合。可供应用程序使用。集合。可供应用程序使用。API分类分类s窗口管理接口函数窗口管理接口函数s图形设备接口函数图形设备接口函数s系统
22、服务接口函数系统服务接口函数三种编程方法三种编程方法l基于基于C语言语言和和SDK工具:工具:直接使用直接使用API,易于理解工作原理。易于理解工作原理。l基于基于C+和和MFC类库类库:以基本类库:以基本类库作为应用程序的接口。作为应用程序的接口。l基于基于Appwizard 的程序设计环境的程序设计环境,即即自动生成应用程序框架。自动生成应用程序框架。什么叫什么叫SDK?当微软每次推出一个重要的当微软每次推出一个重要的Windows版本,一版本,一般都会同时推出一个般都会同时推出一个SDK(SoftwareDevelopmentKit),SDK中包括开发该版本中包括开发该版本Windows
23、所需要的函所需要的函数和常数定义、数和常数定义、API函数说明文档、相关的工具和函数说明文档、相关的工具和示例。示例。SDK一般都使用一般都使用C语言,但不包括编译器。语言,但不包括编译器。SDK可以在微软的站点下载,也可以在可以在微软的站点下载,也可以在MSDN专业专业版和企业版的光盘中找到。安装版和企业版的光盘中找到。安装SDK后,使用后,使用VC+编写和编译程序就可以了。编写和编译程序就可以了。VC+中包括了中包括了SDK中的所有头文件、帮助、示例和工具,所以如中的所有头文件、帮助、示例和工具,所以如果你使用的是果你使用的是VC+,你一般就不需要,你一般就不需要SDK了。只了。只有当你的
24、有当你的VC+版本比较低,如你使用的是版本比较低,如你使用的是VC+5.0,而想利用,而想利用Win98中提供的新功能时,才需要安中提供的新功能时,才需要安装装SDK。从。从Windows98起,起,WindowsSDK叫叫PlatformSDK。PlatformSDK包括最新的包括最新的WindowsAPI(如如Windows2000的新函数的新函数)的有关的有关声明、例子,值得下载。声明、例子,值得下载。4.命名规则命名规则l函数命名规则函数名函数名=动词动词+名词名词动词和名词的第一个字母必须大写动词和名词的第一个字母必须大写例例 GetMessagel变量命名规则小写字母前缀表示变量的
25、类型小写字母前缀表示变量的类型,其余其余 的部分描述变量的功能的部分描述变量的功能例例 nCount数据类型数据类型数据类型数据类型 定义定义定义定义 Win 32 Win 32 变量名变量名变量名变量名BOOL BOOL intint 32 32 位符号数位符号数位符号数位符号数 bOkbOkINT INT intint 32 32 位符号数位符号数位符号数位符号数 nCountnCountUINT unsigned UINT unsigned intint 32 32 位无符号数位无符号数位无符号数位无符号数 uMsguMsgLONG long 32 LONG long 32 位符号数位符
26、号数位符号数位符号数 lTotalSizelTotalSize 四四.Windows 应用程序结构应用程序结构至少包含两个函数至少包含两个函数:4WinMain():必有且仅有一个。必有且仅有一个。4窗口函数窗口函数:每个窗口对应一个窗口每个窗口对应一个窗口函数,以响应该窗口的消息。函数,以响应该窗口的消息。WinMain()函数需完成的功能函数需完成的功能2定义窗口类定义窗口类2注册窗口类注册窗口类2建立窗口类的窗口建立窗口类的窗口2显示窗口显示窗口2运行消息循环运行消息循环WinMain()函数的原型函数的原型int WINAPI WinMain(HINSTANCE hThisInst,/
27、当前实例当前实例HINSTANCE hPrevInst,/前一个实例前一个实例PSTR pszCmdLine,/指向命令行指针指向命令行指针int nCmdShow)/显示方式显示方式窗口类窗口类 WNDCLASSUINT style;/窗口类风格窗口类风格WNDPROC lpfnWndProc;/窗口函数窗口函数int cbWndExtra;/窗口额外信息窗口额外信息int cbClsExtra;/类结构额外信息类结构额外信息HINSTANCE hInstance;/实例句柄实例句柄窗口类窗口类 WNDCLASSHICON hIcon;/图标句柄图标句柄HCURSOR hCursor;/光标
28、句柄光标句柄HBRUSH hbrBackground;/窗口背景画刷句柄窗口背景画刷句柄LPCSTR lpszMenuName;/主菜单资源句柄主菜单资源句柄LPCSTR lpszClassName /窗口类名字窗口类名字hCursorhCursor加载函数加载函数HCURSOR LoadCursor (HINSTANCE hInst,LPCSTR lpszName)hInst:鼠标光标所在的模块鼠标光标所在的模块lpszName:鼠标光标名字鼠标光标名字注册窗口类注册窗口类ATOM RegisterClass (CONST WNDCLASS*lpWClass)功能功能:登记窗口类登记窗口类返
29、回返回:窗口类的唯一值窗口类的唯一值参数参数:窗口类地址窗口类地址创建窗口创建窗口HWND CreateWindow(LPCSTR lpClassName,/窗口类名窗口类名LPCSTR lpWinName,/标题标题DWORD dwstyle,/风格风格int x,int y,/位置位置创建窗口创建窗口int nWidth,int nHeight,/窗口长宽窗口长宽HWND hParent,/父窗口句柄父窗口句柄HMENU hMenu,/菜单菜单HINSTANCE hThisInst,/实例实例LPVOID lpszAdditional)/附加附加信息信息窗口显示函数窗口显示函数BOOL B
30、OOL ShowWindowShowWindow(HWND (HWND hwndhwnd,intint nCmdShownCmdShow)功能功能功能功能:显示或隐藏窗口显示或隐藏窗口显示或隐藏窗口显示或隐藏窗口返回值返回值返回值返回值:可见状态可见状态可见状态可见状态 :返回非零返回非零返回非零返回非零 ;隐藏状态隐藏状态隐藏状态隐藏状态 :返回零返回零返回零返回零 nCmdShownCmdShow可取的值可取的值可取的值可取的值:SW_HIDE SW_HIDE 删除窗口删除窗口删除窗口删除窗口 SW_MINIMIZ SW_MINIMIZ 极小化成一个图标极小化成一个图标极小化成一个图标极小
31、化成一个图标 SW_MAXIMIZE SW_MAXIMIZE 极大化成一个图标极大化成一个图标极大化成一个图标极大化成一个图标 SW_RESTORE SW_RESTORE 恢复成正常窗口恢复成正常窗口恢复成正常窗口恢复成正常窗口更新用户区域更新用户区域BOOL UpdateWindow(HWND hwnd)返回:更新成功返回真返回:更新成功返回真参数:窗口句柄参数:窗口句柄获取消息获取消息 BOOL GetMessage (LPMSG lpMsg,/存放消息存放消息 HWND hwnd,/获取该窗口的消息获取该窗口的消息,若为若为NULL,则获取该应用程序的所有消息则获取该应用程序的所有消息
32、UINT uMsgMin,/消息范围消息范围 UINT uMsgMax);遇遇WM_QUIT消息为零消息为零BOOL TranslateMessage (LPMSG lpMsg)功能:将虚拟键消息转换成字符消息功能:将虚拟键消息转换成字符消息BOOL DispatchMessage (LPMSG lpMsg)功能功能:驱动驱动Windows,把把消息传递给相消息传递给相应的窗口函数。应的窗口函数。窗口函数窗口函数窗口函数负责处理从系统接收窗口函数负责处理从系统接收的输入消息和窗口管理消息。的输入消息和窗口管理消息。它由它由 Windows 直接调用。直接调用。PostQuitMessage(n
33、ExitCode)功能功能:发送发送WM_QUIT消息给系统消息给系统,以通知系统应用程序要结束以通知系统应用程序要结束DefWindowProc(hwnd,message,wParam,lParam)消息缺省处理函数消息缺省处理函数文本编辑器文本编辑器连接器连接器编译器编译器资源编译器资源编译器资源开发工具资源开发工具*.c,*.ccp*.obj*.exe*.res*.rc资源连接器资源连接器应用程序应用程序开发过程开发过程例1 利用MFC Appwizard 创建Windows应用程序l在在C+中中,事事物物之之间间的的关关系系是是通通过过类类的的派派生生和和类类的的成成员员函函数数的的重
34、重载载来来反反映映的的。而而在在VisualC+6.0中中,类类同同样样是是最最重重要要的的元元素素。如如一一个个字字符符串串可可以以是是类类Cstring的的对对象象,一一个个窗窗口口可可以以是是类类CWnd的的对对象象,一一个个对对话话框可以是类框可以是类Cdialog的对象等等。的对象等等。lVisualC+6.0中中的的MFCAppWizard(应应用用程程序序向向导导)可可以以使使用用户户自自动动生生成成一一些些常常用用的的标标准准程程序序结结构构和和编编程程风风格格。例例如如一一般般的的Windows应应用用程程序序结结构构、DLL应应用用程程序序结结构构、单单文文档档(SDI)应
35、应用用程程序序结结构构、多多文文档档(MDI)应用程序结构等。应用程序结构等。l下下面面详详细细介介绍绍利利用用MFCAppWizard创创建建一一个个Windows应用程序的步骤:应用程序的步骤:l第零步启启动动VisualC+6.0,选选择择【File】菜菜单单下下的的【New】菜菜单单项项,选选择择【Projects】标标签签,选选择择【MFCAppWizard(exe)】项项目目类类型型,在在【Projectname】中输入中输入l项项目目名名MyExp,定定位位于于“D:temp”文文件件夹夹中中,单单击击【OK】按钮。按钮。l第一步选选择择【Singledocument】应应用用类
36、类型型,即即单单文文档档应用程序,其他使用默认值,单击应用程序,其他使用默认值,单击【Next】按钮。按钮。l第二步让让用用户户选选择择程程序序中中是是否否加加入入数数据据库库支支持持,在在此此使使用默认值用默认值【None】,单击单击【Next】按钮。按钮。l第三步让让用用户户选选择择在在程程序序中中加加入入复复合合文文档档,自自动动化化或或ActiveX控控件件的的支支持持,在在此此使使用用默默认认值值,单单击击【Next】按钮。按钮。l第四步让让用用户户选选择择应应用用程程序序的的一一些些特特性性,在在此此使使用用默默认认值,单击值,单击【Next】按钮。按钮。l第五步让让用用户户选选择
37、择应应用用程程序序主主窗窗口口的的风风格格、在在源源文文件件中中是是否否加加入入注注释释、使使用用怎怎样样的的MFC类类库库,在在此此使使用用默默认认值值,单击单击【Next】按钮。按钮。l第六步用用户户可可以以对对MFCAppWizard提提供供的的缺缺省省类类名名、基基类类名名、头头文文件件名名、源源文文件件名名进进行行修修改改,使使用用默默认认值值,单单击击【Finish】按按钮钮。则则会会显显示示出出用用户户在在前前面面几几个个步步骤骤中中作作出出的的选选择择内内容容,单单击击【OK】按按钮钮,系系统统开开始始创创建应用程序,并回到建应用程序,并回到VisualC+6.0的主界面。的主
38、界面。l运运行行过过的的应应用用程程序序MyExp可可以以脱脱离离VisualC+6.0单单独独运运行行,运运行行该该文文档档可可以以双双击击“D:tempDebug”下下的的MyExp.exe文文件件。和和所所有有的的Windows应应用用程程序序一一样样,MyExp也也包包含含标标题题栏栏、菜菜单单栏栏、工工具具栏栏、状状态态栏栏等等窗窗口元素。口元素。MFC应用程序的类和文件l例1类说明lAppWiZard在生成应用程序时,共派生了在生成应用程序时,共派生了5个类单个类单击击“MyExpclasses”左侧的左侧的“+”展开所有的类,即可展开所有的类,即可显示出应用程序显示出应用程序My
39、Exp的的5个类,其中:个类,其中:lCAboutDlg:关于关于About对话框的对话框类对话框的对话框类lCMainFrame:主框架窗口类主框架窗口类lCMyExpApp:应用程序类应用程序类lCMyExpDoc:文档类文档类lCMyExpView:视图类视图类l在在工工程程中中,每每个个类类都都拥拥有有自自己己的的类类定定义义文文件件(*.H)和和类类实实现现文文件件(*.CPP)。类类定定义义文文件件主主要要保保存存各各种种类类的的定定义义;类类实实现现文文件件主主要要保保存存各各种种类类的的成成员员函函数数的的实实现代码。现代码。l下面分别对这下面分别对这5个类进行说明:个类进行说
40、明:关于About对话框的对话框类CAboutDlglCAboutDlg是是工工程程MyExp的的对对话话框框类类,它它是是由由MFC类库中的类库中的CDialog类派生而来的。类派生而来的。主框架窗口类CMainFrame lCMainFrame是是工工程程MyExp的的主主框框架架窗窗口口类类,它它的的基基类类是是CFrameWnd。头头文文件件为为MainFrm.h,实实现现文文件为件为MainFrm.cpp。l主主框框架架窗窗口口类类用用于于管管理理主主程程序序的的窗窗口口,来来显显示示窗窗口口的的标标题题栏栏、工工具具栏栏、状状态态栏栏等等;同同时时还还处处理理对对窗窗口口操操作作的
41、的消消息息,例例如如窗窗口口最最大大化化、最最小小化化、改改变变窗窗口口大大小小等等一一般般操操作作。视视图图窗窗口口是是主主框框架架窗窗口口的的子子集集,对对于于多多文文档档界界面面(MDI)应应用用程程序序,主主框框架架窗窗口口是是所所有有MDI子子窗口的容器。窗口的容器。应用程序类CMyExpApp CMyExpApp是是工工程程MyExp的的应应用用程程序序类类,它它的的基基类类是是CWinApp。头头文文件件为为MyExp.h,实实现现文文件件为为MyExp.cpp。应应用用程程序序类类管管理理程程序序的的整整体体,控控制制应应用用程程序序的的所所有有对对象象,包包括括文文档档、视视
42、图图和和边边框框窗窗口口,并并完完成成应应用用程程序序的的初始化工作和程序退出时的清除工作。初始化工作和程序退出时的清除工作。注注意意:每每个个基基于于MFC的的应应用用程程序序都都必必须须有有一一个个从从CWinApp类派生的对象。类派生的对象。文档类CMyExpDoclCMyExpDoc是是工工程程MyExp的的文文档档类类,它它的的基基类类是是CDocument。头头文文件件为为MyExpDoc.h,实实现现文文件件为为MyExpDoc.cpp。l文文档档类类负负责责存存放放程程序序的的数数据据并并读读取取磁磁盘盘文文件件数数据据,或或将将磁磁盘盘文文件件数数据据写写入入磁磁盘盘文文件件
43、中中。文文档档类类必必须须通通过过视图类实现与用户的交互。视图类实现与用户的交互。视图类CMyExpView lCMyExpView是是工工程程MyExp的的视视图图类类,它它的的基基类类是是 CView。头头 文文 件件 为为 MyExpView.h,实实 现现 文文 件件 为为MyExpView.cpp。l视图类主要负责管理视图窗口,显示文档类中的数视图类主要负责管理视图窗口,显示文档类中的数据,可以显示在屏幕上,也可以输出到打印机或其他据,可以显示在屏幕上,也可以输出到打印机或其他设备上;也负责处理用户数据,接受用户对数据的鼠设备上;也负责处理用户数据,接受用户对数据的鼠标、键盘操作并传
44、送给文档类对象。标、键盘操作并传送给文档类对象。l例1 文件说明lAppWizard在自动生成工程时,除了生成上面介在自动生成工程时,除了生成上面介绍的各个类的头文件和实现文件外,还生成了一些为绍的各个类的头文件和实现文件外,还生成了一些为建立建立应应用程序所需要的其他文件。这些文件可以在应用程序所需要的其他文件。这些文件可以在应用程序生成时指定的路径用程序生成时指定的路径(E:C+EXAMPLEMyExp)中找到,下面分别对这中找到,下面分别对这些文件加以说明:些文件加以说明:l1.MyExp.clw:ClassWizard的的信信息息存存储储文文件件,存存储储由由ClassWizard编编
45、辑辑已已有有的的类类或或添添加加新新类类的的信信息息,存存储储由由ClassWizard建建立立和和编编辑辑各各种种消消息息处处理理函函数数和和映映射变量等的信息。射变量等的信息。l2.MyExp.dsp:Project文文件件,即即工工程程文文件件。Project文文件件中中保保存存着着工工程程的的各各种种信信息息,一一个个工工程程文文件件对对应应一一个工程应用程序。个工程应用程序。l3.MyExp.dsw:Workspace文文件件。一一个个Workspace文件可包含一个或多个工程。文件可包含一个或多个工程。l4.MyExp.rc:资资源源定定义义文文件件,包包含含程程序序资资源源的的定
46、定义义,其其中中保保存存了了应应用用程程序序中中使使用用到到的的各各种种资资源源的的信信息息,包包括括存存贮在文件夹中的图标、位图和光标等。贮在文件夹中的图标、位图和光标等。l5.Resource.h:标标准准的的头头文文件件,它它包包含含了了所所有有资资源源符号的定义,与符号的定义,与MyExp.rc文件相对应。文件相对应。l6.StdAfx.h:包包含含在在所所有有AppWizard程程序序中中的的标标准准头头文件,它用于包含其他包含在预编译头文件中文件。文件,它用于包含其他包含在预编译头文件中文件。l7.StdAfx.cpp:包包含含在在所所有有AppWizard程程序序中中,它它包含所
47、有标准包含所有标准include文件。文件。l8.resMyExpDoc.ico:文文件件中中包包含含了了打打开开文文档档时时所所用用的图标文件。的图标文件。l9.resMyExp.rc2:资资源源定定义义文文件件,包包含含了了用用vc不不能能直直接接编编辑辑的的资资源源。可可以以将将所所有有不不能能由由资资源源编编辑辑器器编编辑辑的资源放置到这个文件中。的资源放置到这个文件中。l10.resMyExp.ico:应应用用程程序序的的图图标标文文件件。应应用用程程序序图标包含在资源文件图标包含在资源文件MyExp.rc中。中。l11.resToolbar.bmp:用用于于创创建建工工具具栏栏按按钮钮的的位位图图文文件件。初初始始栏栏工工具具栏栏和和状状态态栏栏是是在在主主边边框框窗窗口口类类中中构构造造的。的。l12.ReadMe.txt:包包含含了了对对所所有有该该程程序序的的文文件件的的解解释释信息,并说明了所有创建的类。信息,并说明了所有创建的类。l另另 外外,如如 果果 在在 App Wizard的的 第第 4步步 中中 选选 择择 了了Context_sensitiveHelp选选项项,则则AppWizard会会自自动动生生成成一一个个.hpj文文件件和和一一些些.rtf文文件件,它它们们用用以以给给出出上上下文的帮助。下文的帮助。
限制150内