网络游戏开发语言基础 ——Windows程序设计

Slides:



Advertisements
Similar presentations
软件开发技术基础 第 3 章 操作系统及程序设计 讲授教师:卫颜俊. 主 要 内 容 主 要 内 容 操作系统及其功能 进程管理应用程序设计 内存管理应用程序设计 设备与文件管理应用程序设计 人机接口管理应用程序设计.
Advertisements

C语言程序设计 主讲教师 :张群燕 电话:
第九章 2D遊戲演算法 課前指引 本章中將介紹在遊戲開發過程中,常會運用到一些貼圖技巧,來展現遊戲畫面及動態效果。例如基本貼圖、動畫貼圖、橫向捲軸移動、前景背景移動等,來提高單純2D圖片的變化性。
C#程序设计案例教程 第3章 程 序 结 构.
動畫與遊戲設計 2D Game 程于芳 老師
第一章 C语言概述 计算机公共教学部.
動畫與遊戲設計 遊戲開發工具 程于芳 老師
项目:贪吃蛇游戏设计 工作任务一:系统设计(system design) 工作任务二:豆类(Bean)设计
编译原理上机实习
计算机图形学 授课教师:陈荣钦 短号: 单位:数信学院.
基于VC++的数字图像特效处理系统的设计与实现
第二章 JAVA语言基础.
吉林大学远程教育课件 Windows A P I编 程 (第四十五讲) 主讲人 : 翟慧杰 学 时:48.
C++程序设计 王希 图书馆三楼办公室.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
CH2 開發環境介紹 最簡單的互動設計 – Arduino一試就上手 孫駿榮、吳明展、盧聰勇.
第二十九章 DLL / LIB函式庫開發 當我們開發程式到一個階段之後,我們一定會希望各個Component的程式碼可以分開的越清楚越好。而這一章最主要就是要告訴各位讀者,我們常在Windows系統中看到的dll或是lib的檔案該怎麼實作?做出這樣的library我們又該如何運用?為什麼使用dll或是lib有利於我們開發程式?以上這些疑問都將會在這一章中得到解答。
第二章 C# 基础知识.
4.1 概述 4.2 类与对象的实现 4.3 对象的初始化和析构 4.4 类的包含 4.5 类模板
第3章 C 語言的基本知識.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第4讲 Windows编程基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第三章 C++中的C 面向对象程序设计(C++).
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
简要回顾 了解课程体系、课程目的和主要内容 掌握Windows编程涉及的一些主要概念 DOS程序和Windows程序的主要区别 窗口和程序
第1章 Windows应用程序框架的 创建与消息处理
第3章 Windows 应用程序基础 2018/12/6 第2讲 Windows 应用程序基础 VC++面向对象与可视化程序设计.
MFC WinSock类的编程 为简化套接字网络编程,更方便地利用Windows的消息驱动机制,微软的基础类库(Microsoft Foundation Class Libary,简称MFC),提供了两个套接字类,在不同的层次上对Windows Socket API函数进行了封装,为编写Windows.
五 COM对象 接口及其接口方法的实现 注册表 类厂 COM组件与客户程序的交互过程 类厂的由来 类厂的定义与实现 类厂的创建
第5章 文本与字体 2018/12/31 面向对象与可视化 程序设计 --Visual C++ 编程 主讲教师: 唐 龙教授 (计算机科学与技术系) 黄维通博士 (计算机与信息管理中心) 清 华 大 学 2001年2月 2018/12/31 Huang Weitong.
Windows 编程技术 2005年9月 2018/12/31.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第4章 MFC编程 4.1 MFC概述 4.2 MFC和Win CObject类 4.4 消息映射的实现
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
Visual C++ Windows Programming
Java程序设计 第2章 基本数据类型及操作.
明解C++教學手冊 柴田望洋 博士 著 書號:PG20269
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
C#程序设计基础 第二章 数据类型.
第三章 C# 基础知识.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第十五讲 MFC与消息处理 MFC简介 Windows编程机制 MFC应用程序框架原理 创建应用程序框架 消息及其分类 消息映射机制
版权所有 复制必究 第 6 章 MFC原理与方法.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
Java變數 2014/6/24.
_05MessageMap的原理 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
第二章 Java基本语法 讲师:复凡.
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
功能表的建立 製作.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
4-12 外部中斷 HT66F70A.
第二章 类型、对象、运算符和表达式.
Review 1~3.
第10章媒体控制接口 10.1 MCI设备类型 10.2 MCI编程步骤 10.3使用MCIWnd窗口类.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
本节内容 消息的接收 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Introduction to the C Programming Language
Go 语言编程 —— 平台研发部 吴植民.
1.4WIN32中的宽字符.
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
_01自己实现简单的消息处理框架模型 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司
變數、資料型態、運算子.
第2章 Java语言基础.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
第二章 Java基础语法 北京传智播客教育
手工编写第一个 MFC程序 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
Presentation transcript:

网络游戏开发语言基础 ——Windows程序设计

第1章 Windows编程基础 1.1 Windows编程约定 Windows基础方式的编程早在VC 1.5版本的时候就已经很明显了,那就是基于Windows API的SDK方式的编程,一种C风格的API编程。 第1章 Windows编程基础

第1章 Windows编程基础 1.1 Windows编程约定 1.1.1 常见缩写 API 1.1.1 常见缩写 API Application Programming Interface,应用程序编程接口。 SDK Software Development Kit,软件开发包。 MFC 第1章 Windows编程基础 Microsoft Foundation Class,微软基础类库。

第1章 Windows编程基础 1.1 Windows编程约定 1.1.1 常见缩写 MSDN 1.1.1 常见缩写 MSDN Microsoft Developer Network,微软开发者网络。 DC Device Contexts,设备环境(也译为设备上下文)。 GDI 第1章 Windows编程基础 Graphics Device Interface,图像设备接口。

第1章 Windows编程基础 1.1 Windows编程约定 1.1.1 常见缩写 MDI SDI 1.1.1 常见缩写 MDI SDI Multiple Documents Interface,多重文档界面。 Simple Document Interface,单文档界面。 DLL Dynamic Link Library,动态链接库。 ATL 第1章 Windows编程基础 Active Template Library,活动模板库。

第1章 Windows编程基础 1.1 Windows编程约定 1.1.2 Windows常见数据类型 Windows常见数据类型与C语言数据类型有很多相似之处。 类型定义 含义 BOOL 布尔型(逻辑型)变量(取值为TRUE或FALSE) BYTE 字节(8位) CCHAR Windows字符 CHAR TCHAR 取决于预处理器的符号UNICODE是否定义 CONST 在执行时其值保持不变的变量 DWORD 双字(32位) FLOAT 浮点型变量 HANDLE 对象句柄 HBITMAP 位图句柄 HBRUSH 画刷句柄 HDC 设备环境句柄 HFILE 文件句柄 HFONT 字体句柄 HGLOBAL 全局内存块句柄 HHOOK 钩子句柄 HICON 图标句柄 HINSTANCE 实例句柄 HPEN 画笔句柄 HWND 窗口句柄 LONG 32位无符号值 第1章 Windows编程基础

第1章 Windows编程基础 1.1 Windows编程约定 1.1.2 Windows常见数据类型 实际上,大部分的Windows数据类型都是来自C语言数据类型。 数据定义的头文件为windef.h。 typedef unsigned long DWORD; typedef int BOOL; typedef unsigned char BYTE; typedef unsigned short WORD; typedef float FLOAT; 第1章 Windows编程基础 大部分的Windows数据类型都全是由大写字母组成

第1章 Windows编程基础 1.1 Windows编程约定 1.1.3 Windows编程命名规则 匈牙利命名法由前缀、描述、类型3个部分组成 前缀 使用前缀 变量属性 g_ 全局变量 c_ 常量 m_ 类成员变量 第1章 Windows编程基础

int分别用作x长度和y长度;C代表「计数器」 1.1 Windows编程约定 1.1.3 Windows编程命名规则 使用前缀 数据型态 c char或WCHAR或TCHAR by BYTE (无正负号字符) n short i int x, y int分别用作x坐标和y坐标 cx, cy int分别用作x长度和y长度;C代表「计数器」 b或f BOOL (int);f代表「旗标」 w WORD (无正负号短整数) l LONG (长整数) dw DWORD (无正负号长整数) fn function(函数) s string(字符串) sz 以字节值0结尾的字符串 h 句柄 p 指标 类型 第1章 Windows编程基础

第1章 Windows编程基础 1.1 Windows编程约定 1.1.3 Windows编程命名规则 描述前缀 使用前缀 描述内容 Init 初始化 Tmp 临时变量 Dst 目的对象 Src 源对象 Wnd 窗口 第1章 Windows编程基础

第1章 Windows编程基础 1.2 Windows编程基本概念 1.2.1 句柄 1.2.1 句柄 句柄对系统来说就是一个指针,系统可以通过句柄得到相应的数据,但它对编程者来说更像是一个标识号,一个全局ID,编程者通过这个标识号向系统发出相应操作请求,由系统内部调用相应资源进行操作。 #ifdef STRICT typedef void *HANDLE; #else typedef PVOID HANDLE; #endif 第1章 Windows编程基础 句柄本质上就是一个空指针,可以指向任何它想指的数据。

第1章 Windows编程基础 1.2 Windows编程基本概念 1.2.1 句柄 在windows中句柄是用来标识资源的。 窗口 1.2.1 句柄 在windows中句柄是用来标识资源的。 窗口 “窗口”是Windows程序实现的基础,大多数Windows程序都是以窗口的方式运行的。 资源 第1章 Windows编程基础 “资源”的概念比较广泛,在Windows程序设计中,对话框、光标、图标、位图、菜单、快捷键、字符串、版本信息等诸多构成窗口的要素都是资源类型。

第1章 Windows编程基础 1.2 Windows编程基本概念 1.2.1 句柄 在windows中句柄是用来标识资源的。 GDI对象 1.2.1 句柄 在windows中句柄是用来标识资源的。 GDI对象 “GDI对象”是主要用于实现进行图形用户界面的对象。 模块 “模块”在Windows编程中实际上就是对应着DLL编程。 实例 第1章 Windows编程基础 Windows系统中创建的各个应用程序都对应着不同的实例句柄。

第1章 Windows编程基础 1.2 Windows编程基本概念 1.2.1 句柄 在windows中句柄是用来标识资源的。 文件 1.2.1 句柄 在windows中句柄是用来标识资源的。 文件 “文件”句柄在Windows编程中实现数据永久存储时很重要。 在Windows平台发展过程中的文件系统有FAT、FAT32、NTFS。 内存块 第1章 Windows编程基础 “内存块”句柄与Windows操作系统在内存管理上的实现方式关系密切。 现代操作系统中,通常都使用了“页”式内存管理。

第1章 Windows编程基础 1.2 Windows编程基本概念 1.2.1 句柄 在windows中句柄是用来标识资源的。 控件 1.2.1 句柄 在windows中句柄是用来标识资源的。 控件 Windows控件是用户为应用程序提供必要信息的用户界面,也是应用程序为用户提供丰富信息的界面。 字体 第1章 Windows编程基础 “字体”句柄在设计界面信息交互时十分重要。 用字体句柄来指定所要选择的字体库、字型、字号。

第1章 Windows编程基础 1.2 Windows编程基本概念 1.2.2 Windows消息机制简介 1. 消息的概念 1. 消息的概念 Windows是一个消息驱动的操作系统。 消息为应用程序和应用程序间、应用程序和操作系统间提供了信息传递的渠道。 在早期的16位Windows系统中,操作系统实现为协同式多任务系统,整个系统只有一个消息队列,所有应用程序都要访问这个消息队列以便检查是否有自己所关心的消息。 在后来的32位Windows 系统中,操作系统实现为抢占式多任务系统,系统中每个运行中的应用程序都有一个消息队列,系统不用等到应用程序完成消息处理就可以得到控制权。 第1章 Windows编程基础

第1章 Windows编程基础 1.2 Windows编程基本概念 1.2.2 Windows消息机制简介 1. 消息的概念 1. 消息的概念 消息是由消息ID(UINT)和两个消息参数(WPARAM,LPARAM)构成的。 每个窗口都有预先指定的消息处理函数(通常是WndProc),在消息处理函数中会识别系统所发送的消息,根据消息ID进行具体处理。 在Windows中定义的消息结构体为: typedef struct tagMSG {    //消息结构体     HWND   hwnd;   //窗口句柄    UINT   message; //消息的类型    WPARAM wParam; //消息的额外信息,含义由消息类型确定    LPARAM lParam; //消息的额外信息,含义由消息类型确定    DWORD  time; //投递消息的时间    POINT  pt; //投递消息时光标的位置 } MSG; 第1章 Windows编程基础

第1章 Windows编程基础 1.2 Windows编程基本概念 1.2.2 Windows消息机制简介 1. 消息的概念 1. 消息的概念 Windows中用宏定义的方式预定义了系统消息。 消息名称 消息含义 WM_CREATE 应用程序创建一个窗口 WM_DESTROY 一个窗口被销毁 WM_MOVE 移动一个窗口 WM_SIZE 改变一个窗口的大小 WM_QUERYENDSESSION 当用户选择结束对话框或程序自己调用ExitWindows函数 WM_QUIT 用来结束程序运行或当程序调用postquitmessage函数 WM_SHOWWINDOW 当隐藏或显示窗口是发送此消息给这个窗口 WM_SETFONT 当绘制文本时程序发送此消息得到控件要用的颜色 WM_SETHOTKEY 应用程序发送此消息让一个窗口与一个热键相关连 WM_GETHOTKEY 应用程序发送此消息来判断热键与某个窗口是否有关联 WM_QUERYDRAGICON 此消息发送给最小化窗口 WM_KEYDOWN 按下一个键 WM_KEYUP 释放一个键 第1章 Windows编程基础

第1章 Windows编程基础 1.2 Windows编程基本概念 1.2.2 Windows消息机制简介 1. 消息的概念 1. 消息的概念 开发者可以自定义消息。 #define WM_USERMESSAGE WM_USER+1 注意,在定义消息时,要避免占用系统消息,能够使用的消息应该是在WM_USER之后 第1章 Windows编程基础

第1章 Windows编程基础 1.2 Windows编程基本概念 1.2.2 Windows消息机制简介 2. 消息循环 2. 消息循环 Windows系统中运行的每个应用程序都拥有自己的消息队列,每个应用程序都通过while循环不停地获取消息。 当发现应用程序本身关心的消息时就通过swtich语句来分别进行处理,否则就让应用处于空闲状态。 while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } 第1章 Windows编程基础

第1章 Windows编程基础 1.3 Windows SDK典型的程序结构 1.3.1 典型的SDK程序 典型的SDK程序结构 头文件需要包含windows.h 第1章 Windows编程基础

第1章 Windows编程基础 1.3 Windows SDK典型的程序结构 1.3.1 典型的SDK程序 2. 对于SDK程序结构的分析 消息处理函数 WndProc函数负责处理窗口消息。 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc(hWnd,msg,wParam,lParam); } 第1章 Windows编程基础

第1章 Windows编程基础 1.3 Windows SDK典型的程序结构 1.3.1 典型的SDK程序 2. 对于SDK程序结构的分析 程序入口 _tWinMain主函数是整个应用程序的入口。 int WINAPI _tWinMain( HINSTANCE hInstance,HINSTANCE, LPTSTR lpCmdLine,int nCmdShow) { ......//注册窗口类 ...... //创建主窗口 ...... //显示并更新主窗口 ...... // 进入消息循环 ...... //程序退出 } 第1章 Windows编程基础

第1章 Windows编程基础 1.3 Windows SDK典型的程序结构 1.3.1 典型的SDK程序 2. 对于SDK程序结构的分析 窗口类注册 WNDCLASSEX类型的变量wcex是个很典型的结构体变量,它的分量中存储着有关窗口类的各个参数 typedef struct tagWNDCLASSEXW { UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; } HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCWSTR lpszMenuName; LPCWSTR lpszClassName; } 第1章 Windows编程基础

第1章 Windows编程基础 1.3 Windows SDK典型的程序结构 1.3.1 典型的SDK程序 2. 对于SDK程序结构的分析 创建窗口 实际窗口的创建通过CreateWindow函数来完成。 hWnd=CreateWindow(lpszClassName, //创建窗口,窗口类名 lpszTitle, //窗口实例的标题名 WS_OVERLAPPEDWINDOW, //窗口的风格 CW_USEDEFAULT,CW_USEDEFAULT, //窗口左上角坐标为缺省值 CW_USEDEFAULT,CW_USEDEFAULT, //窗口的高度和宽度为缺省值 NULL, //此窗口没有父窗口 NULL, //此窗口没有主菜单 hInstance, //应用程序当前句柄 NULL); //不使用该值 第1章 Windows编程基础

第1章 Windows编程基础 1.3 Windows SDK典型的程序结构 1.3.1 典型的SDK程序 2. 对于SDK程序结构的分析 窗口显示 窗口创建成功后,需要用如下代码显示窗口。 ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); 第1章 Windows编程基础

第1章 Windows编程基础 1.3 Windows SDK典型的程序结构 1.3.1 典型的SDK程序 2. 对于SDK程序结构的分析 消息循环 消息循环使用GetMessage函数获取消息,还可以使用PeekMessage函数 MSG msg; if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } 第1章 Windows编程基础

第1章 Windows编程基础 1.3 Windows SDK典型的程序结构 1.3.1 典型的SDK程序 2. 对于SDK程序结构的分析 消息循环 PeekMessage函数原型如下 BOOL PeekMessage( LPMSG lpMsg, // 消息结构指针 HWND hWnd, // 窗口句柄 UINT wMsgFilterMin, // 第一个消息 UINT wMsgFilterMax, // 最后一个消息 UINT wRemoveMsg // 消息移除标志,是否移除消息 ); 第1章 Windows编程基础 PeekMessage函数在没有消息时也立刻返回 GetMessage函数在等到消息时才返回。

第1章 Windows编程基础 1.3 Windows SDK典型的程序结构 1.3.1 典型的SDK程序 2. 对于SDK程序结构的分析 发送消息 应用程序还要在特定时机主动发送消息,有两种方式可以发送消息。 BOOL PostMessage( HWND hWnd, // 目标窗口句柄 UINT Msg, // 要发送的消息 WPARAM wParam, // 消息参数 LPARAM lParam //消息参数 ); 第1章 Windows编程基础

第1章 Windows编程基础 1.3 Windows SDK典型的程序结构 1.3.1 典型的SDK程序 2. 对于SDK程序结构的分析 发送消息 应用程序还要在特定时机主动发送消息,有两种方式可以发送消息。 LRESULT SendMessage( HWND hWnd, //目标窗口句柄 UINT Msg, //要发送的消息 WPARAM wParam, //消息参数 LPARAM lParam //消息参数 ); 第1章 Windows编程基础

第1章 Windows编程基础 1.3 Windows SDK典型的程序结构 1.3.1 典型的SDK程序 2. 对于SDK程序结构的分析 发送消息 PostMessage()被经常用来向队列中加入消息,如果调用成功则返回TRUE,否则返回FALSE。它只是简单的把消息加入到队列中,然后返回。多数情况下,调用它将返回TRUE; SendMessage()则有些不同,它并不是把消息加入到队列里,而是直接翻译消息和调用消息处理,直到消息处理完成后才返回。所以,SendMessage()比PostMessage()有更高的实时性。 第1章 Windows编程基础