《Windows应用程序》PPT课件.ppt

上传人:za****8 文档编号:13190833 上传时间:2020-06-07 格式:PPT 页数:35 大小:570.51KB
返回 下载 相关 举报
《Windows应用程序》PPT课件.ppt_第1页
第1页 / 共35页
《Windows应用程序》PPT课件.ppt_第2页
第2页 / 共35页
《Windows应用程序》PPT课件.ppt_第3页
第3页 / 共35页
点击查看更多>>
资源描述
3Windows应用程序,可视化开发系统集成了一系列系统可用资源和开发工具,一、Windows编程基础,采用交互式方法时,可视化开发平台给出了许多选用的对象,程序员可选择所需对象并确定其属性,由此搭建起应用程序的“大框架”,并可根据需要进一步编写必要的细节代码段,最后构成完整的应用程序,编写Windows程序相当一部分工作是在创建对象和为对象属性赋值,对象特征:具有规范形态和操作模式,API,API函数的功能,利用WindowsAPI函数和MFC类库编写Windows应用程序必须首先了解以下内容:(1)窗口的概念(2)事件驱动的概念(3)句柄(4)消息,编写一个Windows应用程序首先应创建一个或多个窗口,随后应用程序的运行过程即是窗口内部、窗口与窗口之间、窗口与系统之间进行数据处理与数据交换的过程。,应用程序与用户之间交互的接口环境,系统管理应用程序的基本单位,Win应用程序基本的操作单元,(1)窗口一个应用程序的窗口一般包含下列成分:,Windows程序设计是针对事件或消息的处理进行,消息是描述事件发生的信息(如按下鼠标或键盘),事件驱动编程方法对于编写交互式程序很有用处,它避免了死板的操作模式,Windows程序的执行顺序取决于事件发生的顺序,程序的执行顺序是由顺序产生的消息驱动的,但是消息的产生往往并不要求有次序之分。,(2)事件驱动,常用句柄类型及其说明,(3)句柄,应用程序通过句柄访问相应的对象信息,HWND窗口句柄HDC设备环境句柄HBITMAP位图句柄HCURSOR光标句柄HICON图标句柄HFONT字体句柄HMENU菜单句柄HPEN画笔句柄HFILE文件句柄HBRUSH画刷句柄HINSTANCE当前实例句柄,Windows应用程序利用Windows消息(Message)与应用程序及系统进行信息交换。,typedefstructtagMSGHWNDhwnd;窗口句柄,为null,则可检索所有驻留在消息队列中的消息UINTmessage;消息值,由Windows.h头文件中的宏定义来标识WPARAMwParam;包含有关消息的附加信息,不同消息其值有所不同LPARAMlParam;包含有关消息的附加信息,不同消息其值有所不同DWORDtime;指定消息送至队列的时间POINTpt;指定消息发送时屏幕光标的位置,其数据类型POINT也是一个结构体MSG;,附加信息与具体消息号的值有关,在Win中消息用结构体MSG表示,typedefstructtagPOINTLONGx;LONGy;POINT;,(4)消息,(4)消息-分类VC中存在几种系统定义的消息分类,不同的前缀符号经常用于消息宏识别消息附属的分类,系统定义的消息宏前缀如下:,BM表示按钮控制消息CB表示组合框控制消息DM表示默认下压式按钮控制消息EM表示编辑控制消息LB表示列表框控制消息SBM表示滚动条控制消息WM表示窗口消息,二、Windows应用程序常用消息,1.WM_LBUTTONDOWN:产生单击鼠标左键的消息,此外,相似的消息还有:WM_LBUTTONUP:放开鼠标左键时产生;WM_RBUTTONDOWN:单击鼠标右键时产生;WM_RBUTTONUP:放开鼠标右键时产生;WM_LBUTTONDBLCLK:双击鼠标左键时产生;WM_RBUTTONDBLCLK:双击鼠标右键时产生。,2.WM_KEYDOWN:按下一个非系统键时产生的消息,系统键是指实现系统操作的组合键,例如Alt与某个功能键的组合以实现系统菜单操作等。,3.WM_CHAR:按下一个非系统键时产生的消息,wParam为按键的ASCII码1Param与WM_KEYDOWN的相同,wParam:按下键的虚拟键码,用以标识按下或释放的键1Param:记录了按键的重复次数、扫描码、转移代码、先前键的状态等信息。,相似的消息还有WM_KEYUP,在放开非系统键时产生,如F1的虚拟键码在Windows.h文件中定义为VK_F1,4.WM_CREATE:由CreateWindow函数发出的消息,wParam:未用1Param:包含一个指向CREATESTRUCT数据结构的指针,5.WM_CLOSE:关闭窗口时产生的消息,wParam和1Param均未用。,6.WM_DESTROY:由DestroyWiodow函数发出的消息,wParam和1Param均未用。,7.WM_QUIT:由PostQuitMessage函数发出的消息,退出应用程序时发出的消息wParam:含退出代码,标识程序退出运行时的有关信息1Param:未用,8.WM_PAINT,三、Windows中的事件驱动程序设计,过程驱动方法计算平均成绩,事件驱动方法计算平均成绩,四、Windows应用程序组成及编程步骤,1.应用程序的组成,一个完整的Windows应用程序通常由五种类型的文件组成。,1.C/C+语言源程序文件2.头文件3.模块定义文件4.资源描述文件5.项目文件,2.源程序组成结构,1.所有应用程序的入口,类似Main函数,2.完成一系列的定义和初始化,并产生消息循环,WinMain和WinProc是Windows应用程序的主体,(1)WinMain函数,三个基本的组成部分:函数说明、初始化和消息循环,WinMain函数,注意!Win是多任务管理的,同一应用程序的多个窗口可能会同时存,Win系统对每个窗口的执行称为一个实例,并用一个实例句柄来唯一标识,(2)初始化,(a)窗口类定义,通过给窗口类数据结构WNDCLASS赋值完成,该数据结构中包含窗口类的各种属性。窗口类定义常用以下函数:,LoadCursor的作用是在应用程序中加载一个窗口光标HCURSORLoadCursor(HINSTANCEhInstance,LPCTSTRlpCursorName),光标资源所在的模块句柄,NULL则使用系统预定义光标,光标资源名或系统预定义光标标识名,应用程序调用函数GetStockObject获取系统提供的背景刷HBRUSHGetStockObject(intnBrush);,(b)注册窗口类,Win系统本身提供部分预定义的窗口类,程序员也可以自定义窗口类,窗口类必须先注册后使用。窗口类的注册由函数RegisterClass()实现。RegisterClass(/wndclass为窗口类结构RegisterClass函数的返回为布尔值,注册成功则返回真,(c)创建窗口实例,创建一个窗口类的实例由函数CreateWindow()实现函数原型如下:HWNDCreateWindow(LPCTSTRlpszClassName,窗口类名LPCTSTRlpszTitle,窗口标题名DWORDdwStyle,创建窗口的样式intx,y,窗口左上角坐标intnWidth,nHeight,窗口宽度和度高HWNDhwndParent,该窗口的父窗口句柄HWENUhMenu,窗口主菜单句柄HINSTANCEhInstance,创建窗口的应用程序当前句柄LPVOIDlpParam指向一个传递给窗口的参数值的指针),窗口类的显示由ShowWindow和UpdateWindow函数实现。应用程序调用ShowWindow函数在屏幕上显示窗口ShowWindow(hwnd,nCmdshow);/nCmdshow为窗口显示形式标识,显示窗口后,应用程序调用UpdateWindow更新并绘制用户区,并发出WM_PAINT消息。UpdateWindow(hwnd);,(d)显示窗口,(3)消息循环,消息循环的常见格式如下:MSGMsg;while(GetMessage(,将消息的虚拟键转换为字符信息,将消息传送到指定窗口函数,将消息传递给窗口函数的相应过程处理,Windows将产生的消息,WinMain函数,2窗口函数WinProc,WinProc函数由一个或多个switch语句组成。每一条case语句对应一种消息,当应用程序接收到一个消息时,相应的case语句被激活并执行相应的响应程序模块。,窗口函数的一般形式如下:LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessgae,WPARAMwParam,LPARAMlParam)switch(message)message为标识的消息casebreak;caseWM_DESTROY:PostQuitMessage(0);default:returnDefWindowProc(hwnd,message,wParam,lParam);return(0);,在消息处理程序段中一般都有对WM_DESTROY的处理,该消息是关闭窗口时发出的。它向应用程序发出WM_QUIT消息,请求退出处理函数:voidPostQuitMessage(intnExitCode)/nExitCode为应用程序的退出代码,为未定义处理过程的消息提供缺省处理,3数据类型,在Windows.h中定义了Windows应用程序中包含种类繁多的数据类型,4.一些重要的数据结构,MSG:包含一个消息的全部信息,是消息发送的格式,WINDCLASS:包含一个窗口类的全部信息及属性,POINT:定义了屏幕上或窗口中的一个点的X和Y坐标,RECT:定义了一个矩形区域及其左上角和右下角的坐标,几种重要的结构,五、应用程序举例,【例2-1】创建应用程序框架。本例的目的在于说明创建Windows应用程序的方法及过程,#include/包含应用程序中所需的数据类型和数据结构的定义LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);/窗口函数说明/-以下初始化窗口类-intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow)HWNDhwnd;MSGMsg;WNDCLASSwndclass;charlpszClassName=窗口;/窗口类名charlpszTitle=My_Windows;/窗口标题名,/窗口类的定义wndclass.style=0;/窗口类型为缺省类型wndclass.lpfnWndProc=WndProc;/定义窗口处理函数wndclass.cbClsExtra=0;/窗口类无扩展wndclass.cbWndExtra=0;/窗口实例无扩展wndclass.hInstance=hInstance;/当前实例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);/窗口的最小化图标为缺省图标wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);/窗口采用箭头光标wndclass.hbrBackground=GetStockObject(WHITE_BRUSH);/窗口背景为白色wndclass.lpszMenuName=NULL;/窗口中无菜单wndclass.lpszClassName=lpszClassName;/窗口类名为窗口,/-以下进行窗口类的注册-if(!RegisterClass(,/-创建窗口-hwnd=CreateWindow(lpszClassName,/窗口类名lpszTitle,/窗口实例的标题名WS_OVERLAPPEDWINDOW,/窗口的风格CW_USEDEFAULT,CW_USEDEFAULT,/窗口左上角坐标为缺省值CW_USEDEFAULT,CW_USEDEFAULT,/窗口的高和宽为缺省值NULL,/此窗口无父窗口NULL,/此窗口无主菜单hInstance,/创建此窗口的应用程序的当前句柄NULL/不使用该值);,/-显示窗口-ShowWindow(hwnd,nCmdShow);,/-绘制用户区-UpdateWindow(hwnd);,/-消息循环-while(GetMessage(/消息循环结束即程序终止时将信息返回系统,/窗口函数LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)switch(message)caseWM_DESTROY:PostQuitMessage(0);default:/缺省时采用系统消息缺省处理函数returnDefWindowProc(hwnd,message,wParam,lParam);return(0);,调用PostQuitMessage发出WM_QUIT消息,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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