第1章 Windows程序设计基础

合集下载

windows程序设计 (2)

windows程序设计 (2)

Windows程序设计简介Windows程序设计是指在Windows操作系统上开发和设计应用程序。

Windows操作系统提供了丰富的应用程序开发工具和API,使开发者能够利用各种编程语言(如C++、C#、等)开发功能强大、丰富多样的应用程序。

在Windows上进行程序设计可以涵盖很多方面,包括图形用户界面(GUI)设计、操作系统交互、网络通信、以及与硬件设备的交互等。

本文将重点介绍Windows程序设计的基本概念和一些常用的开发工具和技术。

开发工具在Windows上进行程序设计,可以使用各种开发工具和集成开发环境(IDE)来简化开发过程。

以下是一些常用的Windows程序设计开发工具:1.Visual Studio:Visual Studio是一套功能强大的集成开发环境,由Microsoft开发和维护。

它支持多种编程语言,包括C++、C#、Visual Basic等,并且提供了丰富的开发工具和调试功能。

2.Dev-C++:Dev-C++是一个免费开源的C++编程环境,它提供了一个简单易用的集成开发环境,并且可以方便地编译和调试C++程序。

3.Code::Blocks:Code::Blocks是一个开源的跨平台集成开发环境,支持多种编程语言,包括C++、C等。

它提供了丰富的插件和功能,可以方便地进行Windows程序设计。

除了以上列举的开发工具,还有其他一些可供选择的开发工具,开发者可以根据自己的需求和喜好来选择合适的工具。

Windows程序设计基础在进行Windows程序设计之前,了解Windows操作系统的基本概念和原理是非常重要的。

以下是一些Windows程序设计中常用的基础知识:1.Windows窗口:Windows窗口是Windows程序的基本界面单元。

每个窗口都有自己的窗口过程(WindowProcedure),用于处理窗口消息和事件。

2.控件和对话框:Windows程序中常用的GUI元素称为控件,如按钮、文本框、列表框等。

语言程序设计基础01

语言程序设计基础01

PART 01 Visual Basic概述什么是程序设计语言?我们想用计算机解决一个问题,必须事先设计好计算机处理问题的步骤,然后把这些步骤按照计算机能够识别的指令编写出来。

并送给计算机执行,计算机才能按照我们的意图完成指定的工作。

我们把计算机能够执行的指令序列称为程序。

编写程序的过程称为程序设计。

显然我们人类是通过程序来告诉计算机该如何处理问题,那么如何与计算机进行交流?人类与计算机的交流存在鸿沟,计算机听不懂人类语言。

假如我们直接对着电脑说出汉语、英语、俄语等其他自然语言跟计算机交流,计算机听不懂。

计算机只能理解0和1的二进制的指令码,这个时候就需要一种填补语言(中间的媒介)来跨越人与计算机交流的鸿沟。

你好语言程序桥梁这种语言不仅我们人类能理解,,而且计算机也能明白,这种特殊的语言成为程序设计语言,实现人与计算机之间的交流。

程序设计语言与现代计算机共同诞生,共同发展,至今已有60多年的历史;形成规模庞大的家族,经历了机器语言、汇编语言和高级语言三个阶段。

计算机语言用二进制代码0和1来表示计算机可直接执行的指令,每条指令让计算机执行一个简单动作。

对人类来说机器语言比较晦涩难懂,但计算机却可以直接理解和执行,为了克服这个问题,在指令中使用助记符,这样形成了汇编语言。

汇编语言以约定的助记符来表示机器指令,每条汇编指令基本上与一条机器指令相对应,与机器语言比较,汇编语言比较直观,用汇编语言编写的程序经过简单的翻译,就可以被机器执行。

高级语言的语法规则简单清晰,是由英语单词和数学符号组成,最接近我们人类语言,比较容易掌握和理解。

但高级语言编写的程序,需要经过翻译软件翻译成机器指令后,才能被计算机执行。

现在比较流行的高级语言有:Visual Basic、C语言、Java语言。

Visual Basic是一种面向对象的可视化程序设计,它是在 Basic语言基础上发展起来的、功能强大的Windows应用程序的开发工具。

第1章-Visual C#程序设计基础

第1章-Visual C#程序设计基础
第1章 C#程序设计基础 Visual C#程序设计基础
1.1
Framework与 .NET Framework与Visual C#
1.2
程序中简单错误的调试
1.1 .NET Framework与Visual C# Framework与 1.1.1 .NET Framework简介 简介
.NET Framework(又称 框架) (又称.NET框架) 框架 是微软所创建的新一代应用开发平台, 是微软所创建的新一代应用开发平台,它 能够让软件不仅适用于传统的PC而且也能 能够让软件不仅适用于传统的 而且也能 够满足目前在网络时代所提出的新任务的 需要。 需要。
3.Visual C# 2005的新特性 . 的新特性
(1).分部类型 . (2).可空类型 . (3).迭代器 . (4).泛型 . (5).匿名方法 .
(6).命名空间别名限定符 . (7).优化的代码段 . (8).强大的重构工具 . (9).良好的编码风格 . (10).友好的跟踪提示 . (11).新颖的类设计器 . (12).调试更加方便 .
(1) 把源代码编译为 把源代码编译为Microsoft中间语 中间语 言(IL)。 。 (2) CLR把IL编译为平台专用的代码。 编译为平台专用的代码。 把 编译为平台专用的代码
MSIL是将 是将.NET代码转化为机器语言 是将 代码转化为机器语言 的一个中间过程。 的一个中间过程。它是一种介于高级语言 和基于Intel的汇编语言的伪汇编语言。 的汇编语言的伪汇编语言。 和基于 的汇编语言的伪汇编语言
Visual C#在带来对应用程序的快速开 在带来对应用程序的快速开 发能力的同时,并没有牺牲C/C++程序员 发能力的同时,并没有牺牲 程序员 所关心的各种特性。 所关心的各种特性。 C#是专门为 是专门为.NET应用而开发出的语言, 应用而开发出的语言, 是专门为 应用而开发出的语言 C# 语法简洁、功能强大、类型安全,在保 语法简洁、功能强大、类型安全, 风格语言的表示形式和优美的同时, 持C风格语言的表示形式和优美的同时, 风格语言的表示形式和优美的同时 实现了应用程序的快速开发。 实现了应用程序的快速开发。

windows程序设计教程课程设计 (2)

windows程序设计教程课程设计 (2)

Windows程序设计教程课程设计一、课程设计简介本教程旨在通过一系列课程,让学生掌握Windows程序设计的基础知识和开发技能。

通过该课程,学生将学会使用C语言和Windows API 开发Windows应用程序,并且学习一些常用的GUI控件的使用方法。

同时,该课程还包括了一些实战项目,让学生可以通过实践来巩固所学知识。

二、教学目标1.掌握Windows程序设计的基础知识和开发技能;2.熟练掌握C语言和Windows API的使用;3.学习一些常用的GUI控件的使用方法;4.了解Windows操作系统的底层原理;5.能独立完成简单的Windows应用程序开发工作;6.能够通过实践项目来巩固所学知识。

三、教学内容1. Windows程序设计基础(1)Windows程序设计概述了解Windows程序设计的基本概念和特点,掌握Windows应用程序的运行机制和开发流程。

(2)Windows API学习Windows API的基本概念,掌握Windows API的使用方法。

(3)C语言基础熟悉C语言的基本语法和数据类型,掌握C语言的流程控制、数组、函数等基本知识。

(4)Windows程序设计实例通过一个简单的Windows程序设计实例,让学生了解Windows应用程序的工作流程和基本原理。

2. GUI控件的使用(1)Windows控件概述了解Windows界面设计的基本原理,学习Windows界面设计的基本要素和常用的GUI控件。

(2)Windows GUI编程基础学习Windows GUI编程的基本概念和操作方法,掌握如何使用Windows API和C语言进行GUI编程。

(3)Windows GUI控件的使用方法学习如何使用Windows常用的GUI控件,包括按钮、文本框、列表框、组合框、滚动条等。

3. Windows程序设计实战项目(1)记事本应用程序通过实现一个简单的记事本应用程序来加深学生对Windows应用程序设计的掌握。

曾强聪-Visual Basic 6.0程序设计教程(第二版)第1章 Visual Basic 6.0基础知识

曾强聪-Visual Basic 6.0程序设计教程(第二版)第1章  Visual Basic 6.0基础知识

( 4) 磁盘空间 : 对于学习版 , 典型安装 48MB, ) 磁盘空间: 对于学习版, , 完全安装 80MB。对于专业版,典型安装 48MB, 。对于专业版, , 完全安装 80MB。对于企业版,典型安装 128MB, 。对于企业版, , 完全安装 147MB。 。 (5)其他设备:CD-ROM 驱动器、鼠标或其他光 驱动器、 )其他设备: 标控制设备。 标控制设备。
返回本节
1.2.2 安装步骤
(1)启动安装程序。 )启动安装程序。 (2)输入 号。 )输入CD号 (3)输入姓名及用户单位。 )输入姓名及用户单位。 (4)安装路径的选择。 )安装路径的选择。 (5)安装方式的选择。 )安装方式的选择。
返回本节
1.2.3 添加或删除 Visual Basic 6.0 部件
Caption Caption Caption BorderStyle Caption Caption Caption
单价: 数量: 累计应收款: 1 继续 刷新 退出
图1-15 通过代码窗口编辑代码
图1-16 立即窗口
图1-17 监视窗口
返回本节
返回首页
图1-13 “保存文件”对话框
图1-14 界面设计
表1-2 控件属性值设置
对象 Form1 Text1 Text2 Label1 Label2 Label3 Label4 Command1 Command2 Command3 类型 窗体 文本框 文本框 标签 标签 标签 标签 按钮 按钮 按钮 属性 Caption 设置值 商品零售计价
图 1 4 单 “编 辑 ” 菜 返回本节
1.5.3 “视图”菜单 视图”
“视图”菜单用于显示各种窗口。 视图”菜单用于显示各种窗口。 图 1 5 视 图 菜 单 栏 返回本节

第1章 程序设计概述

第1章 程序设计概述

8
1.1.1 程序设计语言
2. 汇编语言 面向机器的程序设计语言,用助记符号描述的指令系统。
汇编语言不能直接执行,必须将其翻译成机器语言 汇编语言 编译 机器语言
特点:低级语言,保持了机器语言的 优点,可有效访问和控制硬件 设备,编译生成的目标代码短, 占用内存少,执行速度快。
9
1.1.1 程序设计语言
② “直到型”循环:先执行循环体A,再判断 循环条件P是否成立,当条件p不成立时, 反复执行A操作,直到p条件成立为止。 注意:循环体至少执行一次。
成立
A
P
不成立 成立
A P
不成立
22
1.2.3 N-S图表示法
N-S图:完全去掉了带箭头的流程线, 每种结构用一个矩形框表示。
1、顺序结构
A模块
A模块 B模块
(1) 计算机处理的任务都是计算任务 (2) 处理对象是数据(数字、文字、图形、图像、声音等) (3) 处理规则是指处理的动作和步骤
2. 程序设计是设计、编制和调试程序的方法与过程。
(1) 程序设计是软件构造活动中重要组成部分 (2) 程序设计是以某种程序设计语言为工具 (3) 程序设计是一项创造性工作,是一门学科
2. 数据元素及其关系在计算机存储器内的表示,称为数据
的存储结构(Storage Structure) 3. 数据的运算,即对数据施加的操作。
13
1.1.4 算法概述
1、算法的概念
广义上讲,算法就是为解决一个问题而采取的方法和步骤
著名的沃思公式: 数据结构+算法=程序
对数据的描述
对操作的描述
程序=数据结构+算法+程序设计方法+语言工具和环境

第一章计算机基础知识计算机通用能力课程

第一章计算机基础知识计算机通用能力课程
从而一步一步地自动算完题目。
计算机工作原理
3.计算机由五大部件组成
原始数据 命令/程序
I/O设备
结果

取数
内存储器

存数
指令
存取命令
运算器
数据线: 控制线:
控制器
输入/输出命令
运算命令
1.5 微型计算机及硬件系统
微型机的硬件结构亦遵循冯·诺依曼型计算 机的基本思想。由中央处理器(CPU)、 存储器和输入/输出接口等集成电路组成, 各部分之间通过总线连接而实现信息交换。
1.2 计算机的特点,应用及分类
计算机的特点:
高速运算能力 计算精度高和可靠的判断能力 具有记忆和逻辑判断能力 具有自动控制能力 通用性,适合各界人士使)
如:天文、地质、气象、航天等涉及的大量计算
信息管理(数据处理)
对信息进行收集、存储、加工、展示、分析和传送 等操作
外部设备
CPU
运算器 控制器
硬件系统
内存(ROM / RAM /Cache)
总线
I/O接口
外存储器
输入设备 输出设备
1.4计算机工作原理
1.计算机采用二进制形式来表示数据和指令 数据:以器件的两种物理状态,如晶体管的“通” 和“断”等来表示,这种器件只能表示二进制代 码。因此,计算机处理的所有数据都要转换成二 进制代码。 指令:计算机中另一种重要信息, 计算机的所有动作都按一条条指令的规定来进行。 指令也用二进制代码表示 操作码 操作数 操作码:指出操作的性质
什么是计算机
计算机是一种能按照事 先存储的程序,自动、 高速进行大量数值计算 和各种信息处理的现代 化智能电子装置。
1.1 计算机的过去,现在和未来

信息技术教学:程序设计初步

信息技术教学:程序设计初步

信息技术教学: 程序设计初步第三部分QBASIc程序设计基础第一章软件设计基础知识【教学目旳】【教学重点、难点】【教学过程】第一节计算机语言语言是人类进行思想交流旳工具, 人与计算机之间进行交流同样也需要“语言”——一种能被计算机识别旳专用语言称为计算机语言。

能被计算机直接接受旳并立即执行旳语言称为计算机语言。

只能被计算机间接接受旳经翻译后形成目旳代码再执行旳语言, 一般称为程序设计语言, 包括汇编语言和高级语言。

一.汇编语言由于机器语言不利于计算机旳推广应用, 人们运用某些简短旳英文单词或缩写来表达指令, 以便于理解和记忆。

这种用数字、符号来替代二进制代码旳计算机语言称为汇编语言。

例如, 要把一种数装入cPU旳寄存器里, 就用moV表达, 要做加法就用ADD表达, 指令次序跳转用jmP表达等。

二.高级语言高级语句靠近自然语句, 一般是用某些简朴旳英语单词或缩写和数学式子来体现意思, 它具有易读、易写、易修改, 能被以便地移植在不一样型号旳计算机上等长处。

目前国内外通用旳高级语言诸多, 比较常见旳有BASIc, FoRTRAN, PAScAL, c, coBLE 等。

它们旳特点和应用领域各有侧重:FoRTRAN语言重要用于科学计算;PAScAL语言重要用于商业和数据处理;c语言是近年来迅速推广使用旳一种现代语言, 既具有高级语言旳特点又具有低级语言旳许多特点, 尤其适合编写系统软件;BASIc语言易学, 适合于初学者。

三.源程序与目旳代码用高级语言编写旳源程序不能直接被计算机接受, 必须通过“翻译”将其翻译成目旳代码后才能被计算机执行。

“翻译”高级语言旳源程序旳方式一般有两种:解释型旳编译型。

所谓“编译”是将源程序翻译成目旳文献, 而“解释”是将源程序逐行处理, 即解释一行处理一行, 再解释下一行……直到结束。

BASIc语言属于解释型旳, QUIckBASIc语言是属于编译型旳。

【教学目旳】【教学重点、难点】【教学过程】第二节软件设计旳环节计算机是一种有效旳信息处理机, 人们怎样运用它去处理信息来处理实际问题呢?一.分析问题:首先要对问题进行分析, 看看这个问题提什么规定, 给出了哪些已知条件;要使问题得到处理, 需要哪些条件;从给出旳已知条件出发, 通过哪些处理才能最终处理问题而得到成果。

最全的windows知识点总结

最全的windows知识点总结

第一章Windows程序设计基础Windows的特点:(1)直观,高效的面向对象的图形用户界面,易学易用。

(2)用户界面统一,友好,美观。

(3)丰富的设备无关的图形操作。

(4)多任务的实现。

操作系统的主要功能有进程管理,内存管理,设备管理,文件系统,用户管理等。

操作系统的分类:(1)单用户单任务操作系统(2)单用户多任务操作系统(3)多用户多任务分时操作系统(4)网络操作系统API(Application Programming Interface 应用程序编程接口)是用来控制Windows各个元素的外观和行为的一套预先定义的Windows函数。

MFC(Microsoft Foundation Classes 微软基础类库)是由微软公司提供的用于在Visual C++环境下编写Windows应用程序的一个框架和引擎,是Windows下应用程序的编程语言接口。

虚拟机:由Windows在内存中创建的逻辑微机,由它来运行应用程序。

内存,准确的说是无力内存。

运行任何一个程序都是要占用物理内存,当关闭这个程序时,系统也会从物理内存中删除这个程序的信息,也称释放内存。

习题:5.Windows的多任务是如何实现?答:当Windows接收到由鼠标,键盘,定时器信号或某些I/O操作产生的“事件”后,为该任务分配CPU时间。

每个任务使用由Windows分配的短暂的时间片轮流使用CPU,由于CPU对每个时间片的处理速度非常快,在用户看来好像这些任务在同时执行。

6.API和MFC的作用是什么?答:上有不做总结。

第二章Windows编程概述Windows基础用户界面对象包括:窗口,标题栏,图标,光标,插入符号,对话框,控件等。

*indows定义的别名:Typedef unsigned long DWORD;无符号长整形Typedef int BOOL;整形Typedef unsigned char BYTE;无符号字符型Typedef float FLOAT;单精度浮点型Typedef unsigned int UINT;无符号整形句柄与存放地址所占用字节一样,4字节,32位。

第1章、Windows游戏开发环境

第1章、Windows游戏开发环境

二、OpenGL(Open Graphics Library )
专业的图形程序接口,是功能强大,调用方便 的底层图形库
可跨平台使用,如应用于Windows, Linux/Unix 和Mac OS X
OpenGL 在游戏世界非常流行,它与 Microsoft Windows 平台上的 DirectX 具有竞争关系。
“Commando”是一个Free Gamers, Inc 公司开发的军事模拟游戏。 “Commando” 游戏的设计者希望游戏看上去和感觉上尽可能 和真实生活一样。 另外, 设计者感到游戏需 要高计算能力的设备来支持这样的游戏剧本。 “Nations Pride” 最理想是在何种平台上进 行设计?
GDI 的特性如下所示:
设备上下文(Device Context) 映射模式(逻辑坐标、设备坐标) 设备无关性
应用
GDI 设备 上下文
设备 驱动
输出 设备
2、GDI+
GDI+是GDI 的扩展。 它由各种 .NET 类组成。 GDI+的一个优点是当你在显示器和打印机上排列输 出数据时, 你不需要知道任何驱动细节。
市场上有一些常见的游戏机, 例如Microsoft Xbo x、Sony Play Station 2和Nintendo GameCu be 。
在市场上常见的各种手持设备有 Nintendo 的 Gam eboy 和 Gameboy Advanced、Nokia 的 N-Ga ge、Sony 的 Playstation Portable 以及 Tapw ave 的 Zodiac。
哪一个DirectX API用来处理来自鼠标、键盘 或其它游戏控制器的数据?
答案: DirectInput

Windows编程基础新手入门

Windows编程基础新手入门

Windows编程基础基于Windows的编程方式有两种;一种是使用Windows的APIApplication Programming Interface,应用程序编程接口函数,通常用C/C++语言按相应的程序框架进行编程;这些程序框架往往就程序应用提供相应的文档、范例和软件开发工具包Software Development Kit,SDK,所以这种编程方式有时又称为SDK方式;另一种是使用“封装”方式,例如Visual C++的MFC方式,它是将SDK中的绝大多数函数、数据等按C++“类”的形式进行封装,并提供相应的应用程序框架和编程操作;事实上,无论是哪种编程方式,人们最关心的内容有三个:一是程序入口,二是窗口、资源等的创建和使用,三是键盘、鼠标等所产生的事件或消息的接收和处理;本章就来讨论这些内容;学习编程往往从简单的例子入手,例如一个C程序常有下列简单的框架代码:include <>int main{printf"Hello World\n"; / 输出 /return 0; / 指定返回值 /}事实上,该程序已包括C程序中最常用的include指令、必须的程序入口main函数、库函数printf调用和return语句;由于此程序是在早期的DOSDisk Operating System,磁盘操作系统环境的字符模型下运行的,因而printf函数所输出的都是字符流,也就是说,它在屏幕上输出一行文本“Hello World”;在Windows环境下,这里的屏幕就由控制台窗口来兼作,而基于Windows的上述C程序代码框架肯定是有所不同的;特别地,由于目前所在的Windows环境基本上都是32位,所以这里的Windows程序平台就是Win32,Windows编程可直接理解为是Win32编程;1.1.1 Windows等价程序等价的Windows程序可以写成:include <>int WINAPI WinMain HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int nCmdShow{MessageBox NULL, TEXT"Hello, World", TEXT"Hello", 0 ;return 0 ;}在深入剖析上述程序之前,先来看一看在Visual C++ 中的编辑、连接和运行的过程:①选择“开始”→“程序”→Microsoft Visual Studio →Microsoft Visual C++ ,运行Visual C++ ;第一次运行时,将显示如图所示的“每日提示”对话框;单击“下一条”按钮,可看到有关各种操作的提示;如果在“启动时显示提示”复选框中单击鼠标,去除复选框的选中标记“”,那么下一次运行Visual C++ ,将不再出现此对话框;单击“关闭”按钮关闭此对话框,进入Visual C++ 开发环境;②选择“文件”→“新建”菜单命令,打开应图“每日提示”对话框用程序向导,显示出“新建”对话框,如图所示;选择“工程”选项卡,从列表框中选中Win32 ApplicationWin32 应用程序项图中的标记1;③单击“位置”编辑框右侧的“浏览”按钮图中的标记2,从弹出的“选择目录”对话框指定项目所在的文件夹,如图所示图中的数字标记表示最经常的操作次序,下同;单击“确定”按钮,退出“选择目录”对话框,回到“新建”对话框中;需要说明的是,为了便于程序的管理和查找,本书所涉及的程序均放入Visual C++ 的工作文件夹“Visual C++程序”中,第1章程序放入子文件夹“第1章”中,第2章程序放入子文件夹“第2章”,依此类推;④在“新建”对话框的“工程名称”编辑框图中的标记3中,输入项目名称Ex_HelloMsg,保留“平台”下Win32复选框的默认“选中”状态,单击“确定”按钮进入下一步;⑤出现Win32 Application向导的“步骤1共1步”对话框,从中可选择要创建的应用程序类型:“一个空工程”、“一个简单的Win32程序”和“一个典型的"Hello World "程序”,如图所示;它们的区别在于:“一个空工程”仅创建Win32应用程序文件框架,不含任何代码;“一个简单的Win32程序”是在“一个空工程”基础上添加了程序框架有入口函数、include 指令等;“一个典型的‘Hello World’程序”在“一个简单的Win32程序”基础上增加了MessageBox函数调用,用来输出“Hello World”;图“新建”对话框“工程”选项卡图“选择目录”对话框⑥选中“一个空工程”,单击“完成”按钮,弹出“新建工程信息”对话框,如图所示;单击“确定”按钮,系统将按前面的选择自动创建此应用程序;图应用程序的向导对话框图“新建工程信息”对话框⑦再次选择“文件”→“新建”菜单命令,Visual C++将打开“新建”对话框并自动切换到“文件”选项卡,如图所示;在左侧的文件类型列表中选中C++ Source FileC++源文件,在右侧的“文件名”编辑框中输入“”或输入“”文件扩展名也可不输入,系统会自动添加cpp扩展名,cpp是C Plus Plus的缩写,是C++的意思;⑧单击“确定”按钮,系统将在创建的Win32项目工程Ex_HelloMsg中创建并添加一个新的文件,同时打开该文件窗口;现在可以在中输入前面例中的代码了;输完后,单击编译工具条上的“生成工具”按钮或直接按F7键,系统开始对Ex_HelloMsg项目工程中的文件进行编译、连接,同时在输出窗口中观察出现的内容,当出现errors, 0 warnings表示可执行文件已经正确无误地生成了;同时也可看到在文档窗口中所有代码的颜色都发生改变,这是Visual C++ 的文本编辑器所具有的语法颜色功能绿色表示注释,蓝色表示关键字等;⑨单击编译工具条上的“运行工具”按钮或直接按Ctrl+F5键,就可以运行刚刚生成的,结果如图所示;单击“确定”按钮,Hello对话框退出;图创建并添加程序文件图开发环境和运行结果1.1.2 头文件是一个include预处理指令开始,实际上在用C/C++编写的Windows应用程序的头部都可以看到这样的指令:include <>头文件是最主要的包含头文件,它还包含了其他一些Windows头文件; 例如:: 基本类型定义: 内核函数: 用户接口函数: 图形设备接口函数这些头文件定义了Windows的所有数据类型、函数调用、数据结构和符号常量,它们是Windows应用程序文档中的一个重要部分;1.1.3 程序入口函数在C/C++程序中,其入口函数都是main;但在Windows程序中,这个入口函数由WinMain 来代替;该函数是在中声明的,其原型如下:intWINAPIWinMainHINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd;可以看出,这个WinMain函数除了形参名、个数与main函数不同外,类型名也有了新的变化;下面就来分析:①WinMain函数被声明成为返回一个int值,同时WinMain函数名前还有WINAPI标识符的修饰;WINAPI是一种“调用约定”宏,它在中有如下定义:define WINAPI __stdcall所谓“调用约定”,就是指程序生成机器码后,函数调用的多个参数是按怎样的次序来传递,同时函数调用结束后堆栈由谁来恢复,以及编译器对函数名的修饰约定等的协议;函数调用约定“协议”有许多,其中由WINAPI宏指定的__stdcall是一个常见的协议,内容包括:参数从右向左压入堆栈;函数自身修改堆栈;机器码中的函数名前面自动加下划线,而函数后面接符号和参数的字节数;特别地,Visual C++的MFC方式却采用了__cdecl调用约定:参数从右向左压入堆栈;传递参数的内存栈由调用者来维护正因为如此可实现变参函数;机器码中的函数名只在前面自动加下划线;②WinMain函数的第一个和第二个参数都是HINSTANCE实例句柄类型;HINSTANCE中,H表示Handle,是“句柄”的意思;在Windows编程中,句柄是一个应用程序用来识别某些资源、状态、模块等的数字;由于句柄唯一标识着对应的资源、状态、模块等,因而使用句柄就是使调用相应的资源、状态、模块;当应用程序运行多次时,每一次都是应用程序的“实例”;由于同一个应用程序的所有实例都共享着应用程序的资源,因而程序通过检查hPrevInstance参数就可确定自身的其他实例是否正在运行;③WinMain函数的第三个参数lpCmdLine用来指定程序的命令行,其参数类型为LPSTR;但在中,却将其改为PSTR;这两种数据类型都是合法的,也都是指向字符串的指针类型;其中的STR是“STRING,字符串”的含义,是指以\0结尾的字符串,LP前缀表示“长指针”,在Win32中它与“P”前缀表示的“指针”含义相同;④WinMain函数的第四个参数nShowCmd用来指定程序最初显示的方式,它可以是正常、最大化或最小化来显示程序窗口;纵观上述参数和类型名可以发现它们的命名规则:●C/C++的类型名仍保留其小写,但新的类型都是用大写字母来命名;●参数名变量名都是采用“匈牙利表示法”的命名规则来定义的;它的主要方法是将变量名前后加上表示“类型”和“作用”的“前缀小写”,而变量名本身由“状态”、“属性”和“含义”等几个部分组成,每一个部分的名称可以是全称,也可以是缩写,但通常只有第一个字母是大写;例如,hPrevInstance则是由前缀h表示“句柄”类型+状态Prev表示“以前的”+属性Instance表示“实例”组成的;1.1.4 MessageBox函数MessageBox是一个Win32 API函数,用来弹出一个对话框窗口,显示短信息;该函数具有下列原型:int MessageBox HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType;其中,第一个参数hWnd用来指定父窗口句柄,即对话框所在的窗口句柄;第二、三个参数分别用来指定显示的消息内容lpText和对话框窗口的标题lpCaption,最后一个参数用来指定在对话框中显示的预定义的按钮和图标标识,它们是在定义的一组以MB_开始的常数组合;例如,下面是在中改变MessageBox的第四个参数;include <>int WINAPI WinMain HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int nCmdShow{MessageBox NULL, TEXT"Hello, World", TEXT"Hello",MB_ICONQUESTION | MB_ABORTRETRYIGNORE ;return 0 ;}程序运行后,结果如图所示;可见,MB_ICONQUESTION 用来指定在对话框中显示图标,而MB_ABORTRETRYIGNORE用来指定“终止”、“重试”和“忽略”按钮,类似这样的预定义标识还有很多,在以后讨论到MFC中的CWnd::MessageBox函数时还要讨论,故这里不再赘述;在程序中,调用MessageBox的实参中还涉及TEXT宏;在Windows编程中,TEXT宏是用来对UNICODE编码的字符串的支持;UNICODE是使用两个字节表示一个字符,这样单字节的ANSI字符和双字节的“汉字”的表示就统一起来了;在程序中使用图第四个参数的作用TEXT文本,无论在何Windows环境下均可显示正确的内容,而不会出现乱码的情形;另外,还有_TEXT 和_T宏等,在Visual C++中,它们的作用是等同的;窗口和消息MessageBox是通过创建的默认“窗口”来显示简单的信息:窗口标题、一行或多行文本、图标和按钮等;在Windows环境中,一个“窗口”就是屏幕上的一个矩形区域,它接收用户的输入,并以文本或图形方式来显示内容;事实上,“窗口”就是用户操作的区域界面,在编程中除创建等操作外,还要处理用户输入、窗口本身事件所产生的“消息”;1.2.1 程序框架代码为了能处理上述两个部分的内容:窗口创建和消息处理,Windows 提供了相应的程序框架,如下面的例子;include <>LRESULT CALLBACK WndProc HWND, UINT, WP ARAM, LP ARAM;客户区标题栏窗口边框其中,类名是已声明过的类的标识符,对象名可以有一个或多个,多个时要用逗号隔开;被定义的对象既可以是一个普通对象,也可以是一个数组对象或指针对象;例如:CStuscore one, Stu, Stus2;这时,one是类CStuscore的一个普通对象,Stu和Stus分别是该类的一个指针对象和对象数组;若对象是一个指针,则还可像指针变量那样进行初始化,例如:CStuscore two = &one;可见,在程序中,对象的使用和变量是一样的,只是对象还有成员的访问等手段;3.对象成员的访问一个对象的成员就是该对象的类所定义的数据成员和成员函数;访问对象的成员变量和成员函数与访问一般结构的变量的方法是一样的;对于普通对象,其访问格式如下:<对象名>.<成员变量><对象名>.<成员函数><参数表>例如,用来调用对象one中的成员函数getName,Stus0.getNo用来调用对象数组元素Stus0中的成员函数getNo;要注意,由于类的封装性,每个成员均有声明的访问属性,一个类对象只能访问该类的公有型成员,而对于私有型成员则不能访问,例如getName和getNo等公有成员可以由对象通过上述方式来访问,但strName、strStuNo、fScore等私有成员不能被对象来访问;若对象是一个指针,则对象的成员访问格式如下:<对象名>-><成员变量><对象名>-><成员函数><参数表>“->”是另一个表示成员的运算符,它与“.”运算符的区别是:“->”用来表示指向对象的指针的成员,而“.”用来表示一般对象的成员;需要说明的是,下面的两种表示是等价的对于成员函数也适用:<对象指针名>-><成员变量><对象指针名>.<成员变量>例如,two.getName与two->getName等价;可见,在C++中,类实际上是一种新的数据类型,它是对某一类对象的抽象;如同变量一样,用“类”也可定义一个对象,此时的对象称为类的实例;1.3.2 构造函数和析构函数事实上,一个类总有两种特殊的成员函数:构造函数和析构函数;构造函数的功能是在创建对象时,给数据成员赋初值,即给对象初始化;析构函数的功能是用来释放一个对象,在对象删除前,用它来做一些内存释放等清理工作,它与构造函数的功能正好相反;1.构造函数C++规定,在类的定义中是不能对数据成员进行初始化的;为了能给数据成员设置某些初值,这时就要使用类的特殊成员函数——构造函数;构造函数的最大特点是在对象建立时它会被自动执行,因此用于变量、对象的初始化代码一般放在构造函数中;C++规定,一个类的构造函数必须与相应的类同名,它可以带参数,也可以不带参数,与一般的成员函数定义相同,可以重载,也可以有默认的形参值;例如:include <>class CPerson{public:CPersonchar str, float h, float w // A:构造函数{strcpyname, str; height = h; weight = w;}CPersonchar str // B:构造函数{strcpyname, str;}CPersonfloat h, float w = 120; // C:构造函数public:void print{cout<<"姓名:"<<name<<"\t身高:"<<height<<"\t体重:"<<weight<<endl;}private:char name20; // 姓名float height; // 身高float weight; // 体重};CPerson::CPersonfloat h, float w{height = h; weight = w;}int main{CPerson one"DING";;CPerson two170, 130;;CPerson three"DING", 170, 130;;return 0;}include后面的是C++编译器自带的文件,称为C++库文件,它定义了标准输入/输出流的相关数据及其操作;cout表示标准输出流对象屏幕,“<<”是插入符,它将后面的内容插入到cout 中,即输出到屏幕上;程序运行的结果为:姓名:DING 身高:–+008 体重:–+008姓名:烫烫烫烫烫烫烫烫烫烫身高:170 体重:130姓名:DING 身高:170 体重:130分析和说明:①类CPerson定义了3个重载的构造函数程序中用A、B、C标明,这些构造函数的重载必须按其规定进行定义,要么参数个数不同,要么参数个数相同,但参数类型不相同;其中,构造函数CPersonfloat h, float w = 120,不仅设置了形参w的默认值,而且还将该构造函数的声明在类中进行,其定义在类体外实现;②在主函数main中,对象one的初始化等价于"DING",因而调用的是B构造函数,此时对象的私有数据成员name设定了初值“DING”,而height和weight初值没有指定,它们的初值取决于对象的存储类型,可能是默认值或无效值;③对象two的初始化等价于170, 130,因而调用的是C构造函数,此时对象的私有数据成员height和weight初值分别设定为170、130,而name初值没有指定,它可能是默认值或无效值;④对象three的初始化等价于"DING", 170, 130,因而调用的是A构造函数,此时对象的私有数据成员name、height和weight初值分别设定为"DING"、170和130;可见,构造函数提供了对象的初始化方式;若没有定义任何构造函数,则编译自动为类隐式生成一个不带任何参数的默认构造函数,由于函数体是空块,因此默认构造函数不进行任何操作,仅仅为了对象创建时的语法需要;例如,对于CPerson类来说,默认构造函数的形式如下:CPerson // 默认构造函数的形式{ }默认构造函数的目的是使下列对象定义形式合法:CPerson one; // 即: ; 会自动调用默认构造函数此时,由于对象one没指定任何初值,因而编译会自动调用类中隐式生成的默认构造函数对其初始化;若当类定义中指定了构造函数,则隐式的默认构造函数不再存在,因此,若对于前面定义的CPerson类来说,若有:C Person four; // 错误则因为找不到默认构造函数而出现编译错误;此时,在类中还要给出默认构造函数的具体定义,即定义一个不带任何参数的构造函数,称为显式的默认构造函数,这样才能对four进行定义并初始化;另外,构造函数的访问属性必须是公有型public,否则上述的类对象定义也是错误的;2.析构函数与构造函数相对应的是析构函数Destructor;析构函数是C++类中另一个特殊的成员函数,它只是在类名称前加上一个“~”符号逻辑非,以与构造函数功能相反;其格式如下:< ~类名>{ … }当对象的生存期结束后,或者当使用delete释放由new来分配动态内存的对象时,析构函数会被自动调用;这样,数据成员尤其是用new为其开辟的内存空间的释放代码就可放入析构函数的函数体中,以便对象消失后自动调用;需要说明的是:①每一个类最多只能有一个析构函数,且应为public,否则类实例化后无法自动调用析构函数进行释放,但不能被重载,没有任何参数,也不返回任何值,函数名前也不能有任何关键词包括void;例如:class CPerson{public:…~CPerson { }// 析构函数…};②与类的其他成员函数一样,析构函数的定义也可在类体外进行,但必须指明它所属的类,且在类体中还必须有析构函数的声明;例如:。

Windows程序设计-第01章-Windows程序设计简介

Windows程序设计-第01章-Windows程序设计简介
第1章
本章主要从Windows发展史、开发工具、开发框架的组成以及应用范围四个方面讲述。其中,Windows发展史,主要讲述了从DOS操作系统发展到Windows操作系统的历史过程,重点讲述了Windows操作系统的几个发展时期;开发工具,主要简述了开发工具的基本应用,以及工程的创建方法;应用程序开发框架组成部分,简述了Win32应用程序的开发框架,即项目文件的组成。
Windows98 SE(第二版)发行于1999年6月10日。它包括了一系列的改进,例如Internet Explorer 5、WindowsNetmeeting 3、Internet Connection Sharing、对DVD-ROM和对USB的支持。
Windows98被人批评为没有足够的革新。即使这样,它仍然是一个成功的产品。第二版也被批评不能在第一版的基础上自由升级。
图1.4
1994年,Windows3.2中文版本发布,国内有很多Windows的先驱用户就是从这个版本开始接触Windows系统的。由于消除了语言障碍,降低了学习门槛,因此Windows3.2在国内很快流行起来。
图1.5
1995年8月24日Windows95发布,这个操作系统开创了Windows的新纪元。新的操作系统发生了质的变化,具有全新的界面和强大的功能,这在某种程度上也宣告了DOS时代的结束。Windows95的销售量在短短4天内就超过了一百万份,出色的多媒体特性、人性化的操作、美观的界面使Windows95获得空前成功。业界也将Windows95的推出看作是微软发展的一个重要里程碑。
图1.1
1981年Xerox(施乐)公司开发了第一个商用图形操作系统。1983年苹果公司开发了第一个基于图形界面的操作系统。1985年微软公司推出了自己的Windows操作系统,即为Windows1.0版本,最初售价为100美元。Windows1.0是微软第一次对个人电脑操作平台,进行了用户图形界面的尝试。Windows1.0从本质上宣告了MS-DOS操作系统的终结。由于Windows1.0仅仅是由字符堆砌,界面非常简陋,所以后来有人将其评价为最不成功的作品。

《计算机基础》第一、二章要点

《计算机基础》第一、二章要点

第一章计算机基础知识计算机的工作原理计算机的基本工作原理是存储程序和程序控制,按照程序编排的顺序,一步一步地取出命令,自动地完成指令规定的操作。

1、预先把指挥计算机如何进行操作的指令序列(称为程序)和原始数据输入到计算机内存中,每一条指令中明确规定了计算机从哪个地址取数,进行什么操作,然后送到什么地方去等步骤。

2、计算机在运行时,先从内存中取出第1条指令,通过控制器的译码器接受指令的要求,再从存储器中取出数据进行指定的运算和逻辑操作等,然后再按地址把结果送到内存中去。

接下来,取出第2条指令,在控制器的指挥下完成规定操作,依此进行下去,直到遇到停止指令。

3、计算机中基本上有两股信息在流动。

一种是数据,即各种原始数据、中间结果和程序等。

原始数据和程序要由输入设备输入并经运算器存于存储器中,最后结果由运算器通过输出设备输出。

在运行过程中,数据从存储器读入运算器进行运算,中间结果也要存入存储器中。

人们用机器自身所具有的指令编排的指令序列,即程序,也是以数据的形式由存储器送入控制器,再由控制器向机器的各个部分发出相应的控制信号。

另一种信息是控制信息,它控制机器的各部件执行指令规定的各种操作。

②冯诺依曼计算机结构由五大部分组成:运算器、控制器、存储器、输入设备、输出设备输人数据和程序的输入设备,记忆程序和数据的存储器,完成数据加工处理的运算器,控制程序执行的控制器,输出处理结果的输出设备。

3.计算机中数据存储的概念应该掌握:位(bit)—二进制数的最小单位,用小写字母b表示。

字节(byte)—以8位二进制数组成1个字节,用大写字母B表示。

它是存储数据的基本单位。

字(word)—由若干个字节组成1个字,也是表示存储容量的一个单位。

存储容量—是衡量计算机存储能力的重要指标,用字节(B)、KB、MB、GB来计算和表示。

换算关系:1B=8b1KB=1024B1MB=1024KB1GB=1024MB4.软件系统应该掌握:指令—包含有操作码和地址码的一串二进制代码。

深入浅出 windows api 程序设计

深入浅出 windows api 程序设计

深入浅出windows api 程序设计全文共四篇示例,供读者参考第一篇示例:深入浅出Windows API程序设计Windows API是Windows操作系统所提供的一组接口,允许开发者与操作系统进行交互,控制、管理和定制系统资源。

通过调用Windows API,开发者可以实现各种功能,包括但不限于文件操作、窗口管理、内存管理、网络通信等等。

深入掌握Windows API程序设计,可以让开发者更加灵活地处理系统资源,提高程序性能和用户体验。

本文将通过实例介绍Windows API程序设计的基本原理和常用技巧,帮助读者快速上手和深入了解Windows API。

Windows API是一组由微软公司定义和支持的应用程序编程接口,包括了一系列的函数、结构体和常量。

开发者可以通过调用这些接口,实现对操作系统资源的操作和控制。

Windows API可以分为用户界面API和系统服务API两类。

用户界面API包括了一系列函数,用于创建、管理和处理用户界面元素,如窗口、按钮、菜单等。

其中最常用的函数包括CreateWindow、SendMessage、GetDlgItem、SetWindowText 等。

系统服务API则包括了一系列函数,用于访问系统资源和执行系统级操作,如文件操作、注册表访问、进程管理等。

常用的系统服务API函数包括CreateFile、RegOpenKey、EnumProcesses等。

Windows API程序设计的基本原理是通过调用API函数,与操作系统进行交互并控制系统资源。

在使用Windows API进行程序设计时,需要注意以下几点:1. 导入API函数:在使用Windows API时,需要先导入对应的API函数。

可以通过声明函数原型的方式告诉编译器需要调用的函数及其参数,然后利用LoadLibrary和GetProcAddress函数来获取函数的地址。

2. 创建消息循环:在Windows程序中,消息循环是至关重要的部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Windows 程序设计
第1章
Windows程序设计基础
本章主要内容 介绍Windows平台下程序运行的内部机 制,涉及到一些术语,为进一步学习 MFC程序打下基础。
2013-9-9
2
1.1 API与SDK API: Windows操作系统提供了各种各样 的函数,以方便我们开发Windows应用 程序,这些函数是Windows操作系统提 供给应用程序编程的接口,即 Application Programming Interface,简称 API函数。可在MSDN中查到。 SDK: Software Development Kit,软件开 发包,是开发所需要资源的一个集合。 注:API和SDK已成为广泛使用的术语
2013-9-9 3
1.2 窗口与句柄 窗口:屏幕上的一块矩形区域,是 Windows应用程序与用户进行交互的接 口。利用窗口,可以接收用户的输入, 以及显示输出。 句柄(HANDLE):在Windows程序中, 有各种各样的资源(窗口、图标、光标 等),系统在创建这些资源时会为它们分 配内存,并返回标识这些资源的标识号 (整数)。 HWND HICON HCURSOR HBURSH…
用于将虚拟键消息转换为字符消息。
DispatchMessage函数 分派一个消息到窗口过程,由窗口过 程函数对消息进行处理。
2013-9-9 15
应用程序 (2)GetMessage(…)
(3)DispatchMessage(…)
窗口过程
消息队列
(1) (4) 操作系统 Windows应用程序的消息处理机制2013 Nhomakorabea9-9 12
窗口类的类型
在我们的程序中经常要用到一类变量,这个变量里的每一位(bit) 都对应某一种特性。当该变量的某位为1时,表示有该位对应的 那种特性,当该位为0时,即没有该位所对应的特性。当变量中 的某几位同时为1时,就表示同时具有几种特性的组合。一个变 量中的哪一位代表哪种意义,不容易记忆,所以我们经常根据 特征的英文拼写的大写去定义一些宏,该宏所对应的数值中仅 有与该特征相对应的那一位(bit)为1,其余的bit都为0。我们 使用goto definition就能发现CS_VREDRAW=0x0001, CS_HREDRAW=0x0002,CS_DBLCLKS =0x0008, CS_NOCLOSE=0x0200。他们的共同点就是只有一位为1,其余 位都为0。如果我们希望某一变量的数值既有CS_VREDRAW特 性,又有CS_HREDRAW特性,我们只需使用二进制OR(|)操 作符将他们进行或运算相组合,如style=CS_VREDRAW | CS_HREDRAW | CS_NOCLOSE。如果我们希望在某一变量原有 的几个特征上去掉其中一个特征,用取反(~)之后再进行与 (&)运算,就能够实现,如在刚才的style的基础上去掉 CS_NOCLOSE特征,可以用style & ~CS_NOCLOSE实现。
2013-9-9 10
Step 1 设计一个窗口类 一个完整的窗口具有许多特征,包括光 标、图标、背景色等,完成设计后还要 起一个名字。Windows已经为我们定义 好了一个窗口所应具有的基本属性 (WNDCLASS),我们只需要像做填空一 样将需要填充的部分填写完整,一种窗 口就设计好了。
);
2013-9-9
9
1.4.2 窗口的创建 创建一个完整的窗口需要经过下面四 个操作步骤: 1. 设计一个窗口类WNDCLASS 2. 注册窗口类RegisterClass() 3. 创建窗口CreateWindow() 4. 显示及更新窗口 ShowWindow() UpdateWindow()
2013-9-9 5
操作系统是怎样将感知到的事件传递给应用程序的呢? 这是通过消息机制(Message)来实现的。操作系统将每 个事件都包装成一个称为消息的结构体MSG来传递给 应用程序,参看MSDN。 MSG结构定义如下: typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG;
2013-9-9
11
typedef struct _WNDCLASS { UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HANDLE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; } WNDCLASS;
2013-9-9 16
2013-9-9 4
1.3 消息驱动、消息队列、消息响应 Windows是一种消息驱动(事件驱动)的 操作系统。操作系统能够将输入设备的 变化上传给应用程序。如用户在某个程 序活动时按了一下键盘,操作系统马上 能够感知到这一事件,并且能够知道用 户按下的是哪一个键,操作系统并不决 定对这一事件如何作出反应,而是将这 一事件转交给应用程序,由应用程序决 定如何对这一事件作出反应。MSG
2013-9-9
13
• 窗口过程函数
第二个成员变量lpfnWndProc指定了这一类型 窗口的过程函数,也称回调函数。回调函数 的原理是这样的,当应用程序收到给某一窗 口的消息时(还记得前面讲过的消息通常与 窗口相关的吗?),就应该调用某一函数来 处理这条消息。这一调用过程不用应用程序 自己来实施,而由操作系统来完成,但是, 回调函数本身的代码必须由应用程序自己完 成。对于一条消息,操作系统到底调用应用 程序中的哪个函数(回调函数)来处理呢? 操作系统调用的就是接受消息的窗口所属的 类型中的lpfnWndProc成员指定的函数。每一
HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command line int nCmdShow // show state
2013-9-9 7
消息队列:操作系统为每个应用程序建 立的用于盛放消息的先进先出的缓冲区。
应用程序
OS
消息响应:应用程序对消息进行处理的 过程。
2013-9-9
8
1.4 WinMain函数 (Windows程序的入口函数) 1.4.1 WinMain函数定义 int WINAPI WinMain(
2013-9-9 6
从变量的类型区分变量的用途
int x,y; x=30; y=30; //x和y既可以用来表示坐标点,也可以用来表示宽度和 高度,还可以用来表示身高和体重。
typedef int WIDTH typedef int HEIGHT WIDTH x; HEIGHT y; //好处:我们从变量的类型上就可以知道x和y是用来表 示宽度和高度。
种不同类型的窗口都有自己专用的回调函数, 该函数就是通过lpfnWndProc成员指定的。
2013-9-9 14
1.4.3 消息循环 在创建窗口、显示窗口、更新窗口后, 我们需要编写一个消息循环,不断从消 息队列中取出消息,并进行响应。 GetMessage函数取出消息 TranslateMessage函数
相关文档
最新文档