




已阅读5页,还剩69页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VC win32API游戏开发,VC win32API游戏开发,1.Windows编程2.Windows应用程序的构成和编程3 .游戏实现原理和WindowGDI图形4 .游戏实例的解析, 1.Windows编程1.1WindowsAPI编程基础知识1.2窗口1.3事件驱动1.4句柄1.5消息1.6Windows应用的一般消息、1.1WindowsAPI编程基础知识、Windows 交互式方法:利用MFC库。 为了让程序员创建Windows样式的应用程序,Windows提供了applicationprogramminginterface (applicationprogramminginterface ),它是Windows系统和Windows应用程序之间的标准程序接口成千上万的API函数包括各种窗口类和系统资源。 API为应用程序提供特定于windows系统的函数和数据结构。 windows应用程序可以使用许多API函数调用系统功能。MFC、MFC、microsoftfoundationclasslibrary、Microsoft的基础库,约有200种。 MFC封装了大多数API函数,提供了应用框架,简化并标准化了windows编程。 但是,WindowsAPI编程方法始终是windows编程的基础。 此外,为了创建1.2个窗口、Windows应用程序,首先创建一个或多个窗口,其中,应用程序执行过程是在窗口内部、窗口和窗口之间、窗口和系统之间进行数据处理和数据交换的过程。 1.3事件驱动、Windows编程以事件或消息为对象,其执行顺序取决于事件的发生顺序。 在Windows环境中,当应用程序启动时,系统会等待用户在图形用户界面中进行选择,包括创建鼠标按钮、键盘按钮和窗口的关闭、调整大小和移动。 对于系统来说,这些都是事件,并生成相应的Windows消息。 事件驱动编程方式有助于创建交互式程序,避免不灵活的动作模式。 1.4句柄、句柄和名称指windows对象的弱点。 Windows句柄是一个32位指针变量,指向Windows对象占用的内存空间。 使用句柄对Windows管理内存中的各种Windows对象非常有用。 公共句柄类型及其说明,1.5消息,消息是说明事件发生的信息。 Windows应用程序通过消息交换信息。 在Windows中,消息以结构MSG表示,其结构为TypedefstructtagMSGHWNDhwnd; /窗口句柄UNITmessage /消息编号。 WPARAMwParam; /用于提供消息的附加消息。 LPARAMlParam /用于提供消息的附加消息。 DWORDtime; /指定将消息发送到队列的时间点POINTpt指定发送消息时屏幕光标的位置MSG; VC中存在多个预定义消息分类,并且不同的前缀符号经常被用于标识消息分类。 下表中所示:1.6Windows应用程序的常用消息,1 .鼠标消息,主要是WM_LBUTTONDOWN:生成单击鼠标左键的消息。 释放WM_LBUTTONUP:鼠标左键时发生的消息。 2 .键盘讯息是WM_KEYDOWN:按下下列系统键时发生的讯息: WM_KEYUP:释放系统密钥时生成的消息。 3 .窗口消息是创建WM_CREATE:窗口时CreateWindows函数发出的消息。 WM_CLOSE:关闭窗口时生成的消息。 当WM_QUIT:退出应用程序时,PostQuitMessage函数发送消息。 、2.Windows应用程序的配置和编程、2.1典型的Windows程序结构2.2门户函数WinMain()2.3窗口函数WinProc()2.4Windows应用程序的典型数据类型2.5API编程示例2.1典型的Windows程序结构,Windows应用程序的主体由WinMain ()函数完成,该函数负责窗口创建和消息循环创建。 WinProc ()函数负责处理消息。 2.1典型的Windows程序结构,2.2入口函数winMain()winmain ()函数类似于c语言的main函数,并且是Win32应用入口函数。 WinMain ()函数主要完成主窗口的创建,并生成和处理消息循环。WinMain ()函数和windows是多任务系统,因此同一应用程序的多个窗口可能同时存在。windows系统中每个窗口的运行称为实例,由实例句柄唯一标识。 WinMain ()函数的工作方式与DOS程式中的main ()函数相同,但是WinMain ()函数需要系统传递的四个引数。 WinMain ()函数的原型是intpascalwinmain (hinstance hinstance,/当前实例句柄HINSTANCEhPrevInstance,/上一实例句柄LPSTRlpCmdLine, /命令行字符intnCmdShow)/窗口显示方法、winmain ()函数、第一个参数hinstance以及标识该应用程序的当前实例的句柄。 第二个参数是hPrevInstance,它是标识应用程序的前一个实例的句柄。 第三个参数是lpCmdLine,指向应用程序命令行参数字符串的指针。 最后一个参数是nCmdShow,它是指定窗口显示方式的整数。 此整数值包括SW_SHOW、SW_HIDE、SW_SHOWMAXIMIZED和SW_SHOWMINIMIZED。 WinMain ()函数主要由两部分组成。 窗口初始化消息循环、窗口初始化通过定义窗口类:并为窗口类的数据结构wind类指定值来设置窗口类的各种属性。 例如,窗格、窗口标题栏中的字符、窗口的大小和位置、鼠标、背景颜色等。 注册窗口类别:Win系统本身可以提供预定义的窗口类别,并且程序员也可以定制窗口类别。 必须先注册窗口类,然后才能使用它。 窗口类的注册由函数RegisterClass ()完成。 创建窗口实例:要创建窗口类的实例,请使用CreateWindows ()函数。 窗口显示:窗口类的显示由ShowWindows ()函数和UpdateWindows ()函数来实现。 ShowWindows ()函数:应用程序调用ShowWindows ()函数以在屏幕上显示窗口。 UpdateWindows ()函数:在显示窗口时,应用程序调用UpdateWindow以更新用户区域并发出WM_PAINT消息。 消息循环,Windows为当前运行的每个Windows程序保留消息队列。 发生输入事件时,Windows会将事件转换为消息,并将消息放入程序的消息队列中。 程序执行称为“消息循环”的程序代码,从消息队列中检索消息。 WinMain ()函数的消息循环代码:/消息循环以调用GetMessage ()开头,从消息队列中选择/消息while(GetMessage(,WinMain ()函数的大致结构,intpascalwinment wndclass.style=cs _ Hg重做| cs _ VC重做; wndclass.lpszClassName=”Lei”这10个字段/注册窗口类: RegisterClass(,2.3窗口函数WndProc (),窗口函数WndProc ()是Windows应用程序的消息处理器窗口函数WndProc ()定义了应用程序对接收到的各种消息的响应,并包含了处理各种可接收消息的过程。 WndProc函数由一个或多个switch语句组成。 每个case语句对应一条消息,当应用程序接收到该消息时,将激活相应的case语句并运行相应的响应程序模块。 窗口消息处理程序未处理的消息将传递给名为DefWindowProc的Windows函数,默认情况下处理。 消息处理函数WndProc的大致结构,lresultcallbackwndproc (hwnddhmainwnd、UINTmessage、WPARAMwParam、LPARAMlParam)/窗口函数的定义 switch (message ) 1 break; case: break; 关闭case WM _ destroy :/应用程序窗口时发出的消息PostQuitMessage(0); 发出WM_QUIT消息,退出应用程序return0 default : break; /默认消息处理过程调用returnDefWindowProc(hMainwnd、message、wParam、lParam )、2.4Windows应用程序的常规数据类型,以及编程到所有windows应用程序实现最简单功能的程序以WinApiDemo为例,说明Windows程序的基本框架。 操作步骤如下: (打开VisualC 6.0。 在File菜单中选择New,在显示的对话框中选择Projects栏(新建项目),单击其下面的Win32应用程序项目,表示使用Win32环境创建应用程序。(在Locatin (路径)中输入项目路径,在ProjectName (项目名称)中输入WinApiDemo,然后单击默认设置下的OK按钮。 (在“文件”菜单中选择“新建”,在出现的对话框中选择“文件”栏(新建文件),然后单击下面的“c source文件”项以指示创建新的c源文件。 在右侧的文件栏中输入“WinApiDemo”,最后勾选Addtoproject复选框,点击OK按钮。 (4)在“winapi demo.CPP”文件中输入以下程序代码。 2.5API编程示例,WinApiDemo.cpp源代码(1)、#include/头文件LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM) /窗口函数声明。 该函数将指向应用程序窗口的各种消息charszClassName=windowclass ; /窗口结构的名称charszAppTitle=API创建窗口实例; /窗口标题intpascalwinmain (hinstance hinstance,HINSTANCEhPrevInstance,LPSTRlpszCmdParam,INTnCmdShow)/WinMain ()函数的定义 hwnddamaning /窗口句柄msg; /消息结构WNDCLASSwinclass; /窗构造体if (! hprevinstance ) winclass.style=cs _ Hg读取| cs _ VC读取; /窗口样式winclass.lpfnWndProc=WndProc; winclass.cbClsExtra=0; /附加参数winclass.cbWndExtra=0; /附加参数winclass.hInstance=hInstance; /当前应用程序实例句柄winclass.hIcon=LoadIcon(NULL,IDI_APPLICATION) /窗口图标winclass.h cursor=load cursor (null, IDC_ARROW) /窗口光标winclass.hbrbackbackground=(hbrush ) getstocckobject (lt gray _ brush )/窗口的背景色为浅灰色winclass.lpszMenuName=NULL /窗口菜单winclass.lpsz类名称=SZ类名称; /命名窗口结构,/CreateWindow ()函数根据窗口结构的名称命名窗口RegisterClass(/注册窗口),WinApiDemo.cpp源代码(2),/以下称为CreateWindow () 用函数创建窗口mainwnd=createwindow (SZ class name,/窗口结构名称szAppTitle,/窗口标题WS_OVERLAPPEDWINDOW ), /窗口样式可重叠的窗口/以下四个参数表示窗口左上角的x,y坐标和窗口的宽度和高度/默认值CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, /以下参数分别是父窗口句柄、窗口菜单句柄、应用程序实例句柄/和附加参数NULL,NULL,hInstance,NULL; 显示ShowWindow(hMainWnd,SW_SHOWNORMAL) /最大化窗口显示updatewindow (h mainwnd )/更新窗口/然后使用While ()循环消息循环while(GetMessage( ), 定义WinApiDemo.cpp源代码(3),lresultcallbackwndproc (hwndohmainwnd,UINTmessage,WPARAMwParam LPARAMlParam)/窗口函数 switch (message ) Keyboard ,MB_OK; break; caseWM_RBUTTONDOWN:/鼠标消息MessageBox(hMainwnd,鼠标右键被按下! “Mouse”,MB_OK; break; caseWM_LBUTTONDOWN:/鼠标信息MessageBox(hMainwnd,鼠标左键被按下! Mouse,MB_OK; brea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑企业安全培训师派遣与培训协议
- 货车司机安全驾驶行为规范合同
- 既有建筑节能改造工程节能改造工程设计与施工一体化合同
- 数据资产托管与数据可视化服务合同
- 工业废水处理技术改造与水效提升服务协议
- 地质勘探领域专业人才岗位聘用服务合同
- 3D影视拍摄移动轨道租赁与特效制作合同
- 盲盒商品销售数据统计与分析合作协议
- 节约型物流车队调度与成本控制合同
- 母婴护理服务与婴幼儿用品质量检测合作协议
- 肝硬化常见并发症的护理
- 数据资产的确认与计量问题研究
- 惠州一中、珠海一中等六校联考2024-2025学年高三考前热身物理试卷含解析
- 某县公共实训基地建设项目可研报告
- 2025年纳米镍粉市场规模分析
- 2024年山东淄博中考满分作文《从“阅”到“悦”》5
- 拒绝校园霸凌守护美好校园
- 不要慌太阳下山有月光二部合唱简谱
- 中西文化比较与跨文化交际知到课后答案智慧树章节测试答案2025年春南开大学
- 2025年农村土地使用权益永久转租协议范本
- 病历书写规范培训课件
评论
0/150
提交评论