第 1 章 引 论
1983年 12月首次推出 Windows系统的第一个版本的,命名为
Windows v1.0
1985年推出了 Windows v1.1版本
1987年 10月,Microsoft发行了 Windows系统的另一个重要版本
Windows v2.0
1990年 5月,Microsoft公司发行了一个划时代的版本 Windows
v3.0
1992年 4月,Microsoft公司又推出了支持象动态数据交换、对象连接和嵌入、多媒体等功能的 Windows v3.1版本
1995年,Microsoft公司隆重推出了 Windows 95
1998年,Microsoft公司推出了 Windows 98版本
Windows 操作系统发展简介
Windows 操作系统特点
1,一致的图形化的用户界面 -Windows系统及 Windows应用程序的用户可以得到一致的用户界面所带来的许多认识的方便。 用户受益于使用图形和图像来显示应用程序的数据
2,多任务机制 -Windows向用户提供非常重要的多任务功能。
3,硬件即插即用功能 -Windows提供了各种设备驱动程序支持各种各样的外部设备
4,与设备无关的图形图象机制 等等
Windows 图形用户界面窗口及其组成,
1,窗口主边框和窗口子边框
2,用户区
3,控制菜单框
4,标题条
5,菜单条
6,工具条
7,水平滚动条和垂直滚动条
8,最大化 /还原窗口按钮
9,最小化按钮
10,关闭按钮
11,状态条 等等
Win32界面元素
Win32操作系统为我们提供了一组预先构造好的界面元素或控件来建立 GUI外观和作用相像的应用程序。这种方法使用户具有对 Windows 应用熟悉牲,并使用户能较容易地把操作技术的有关知识从熟悉的软件应用传递到新的不熟悉的软件应用中。
我们通过编程还可以自定义控件及其式样,
给界面设计人员提供创作空间。
常用标准控件及其说明标准控件 说 明按钮 用于启动动作或改变性属性的图形控件分组框 用于组织其他控件的可视控件列表框 用于显示项目列表,可以和按钮和文本框相结合滚动条 用于在水平或垂直方向上滚动窗口静态文本 用于显示文本或图形元素编辑框 用于显示和编辑文本图标列表 图形图标的列表列表视图 图标和标注的列表进度指示器 任务完成情况的可视化量测器
RTF编辑框 字体可格式化的编辑框标签 ( Tab) 控制 文件夹标签滑尺 和滚动条相类似的滑尺控制树型视图 树型结构显示
Windows 编程基本约定匈牙利表示法,
在 Windows程序设计中,为了提高程序代码的可读性,我们对程序中使用的变量或对象定义其标识符应遵从一定规则 。 匈牙利表示法就是一种提供定义变量名的规则 。 匈牙利表示法是一种定义变量名的好方法,Windows程序员经常使用这个方法 。 匈牙利表示法是以 Microsoft公司的程序员 Charles Simonyhi
的国家命名的,它在 Microsoft公司编程人员中广泛用于应用程序和系统软件的开发当中 。
Windows变量的常用前缀前 缀 变量意义
b 布尔量 ( 非 0是 TRUE,0是 FALSE)
c 字符量 ( 一个字节值 )
dw 32位无符号长型整数
f 用 16位整数表示的一种位标记
h 16位句柄
l 32位长整数
lp 32位长指针
n 16位短整数
p 16位短指针
pt 坐标量 ( x,y),放在 32位无符号整数中
rgb RGB颜色值,放在 32位整数中用 C++编程时,有的数据类型还是挺复杂的,为了阅读和书写程序方便,我们通常的办法是用 typedef定义一些容易读和写的等价数据类型。如 LPSTR等价数据类型为 char*。许多这样的数据类型只是一些基本数据类型的别名基本数据类型句 柄句柄是 Windows编程的基础,所以我们了解它们的作用是非常重要的。所谓句柄是 Windows使用的一种无重复整数。句柄主要用来标识应用程序中的一个对象,如窗口、实例、菜单、内存、输出设备、控制或文件等。例如在模块定义文件中,菜单资源中的菜单项被定义并且赋给了一个句柄值。应用程序的菜单条中,第一个菜单的第一个菜单项可能被赋予 100这个句柄值,那么第二项可能被赋予 101这个句柄值。在应用程序的源代码中,这些菜单项将要通过 100和 101来区分。 Windows应用程序只能访问句柄,而不能直接访问句柄所指示的实际数据。
Windows系统控制着这些系统数据的存取权,这样才能在多任务环境中保护这些数据。
Windows常见公用句柄类型句柄类型 说 明
HBITMAP 保存位图信息的内存区域的句柄
HBRUSH 画刷句柄
HCTR 子窗口控件句柄
HCURSOR 鼠标光标句柄
HDC 设备描述表句柄
HDLG 对话框句柄
HFONT 字体句柄
HICON 图标句柄
HINSTANCE 应用程序的实例句柄
HMENU 菜单句柄
HMODULE 模块句柄
HPALETTE 颜色调色板句柄
HPEN 在设备上画图时用于指明线型的笔的句柄
HRGN 剪贴区域句柄
HTASK 独立于已执行任务的句柄
HWND 窗口句柄
SDK 实现的 Windows 应用程序编写 Windows操作系统下的应用程序免不了需要介绍
Windows API的有关方面知识 。 Windows API (Windows
Application Programming Interface,Windows应用程序编程接口 )是 Windows操作系统给我们开发人员提供的编写应用程序的接口,它是所有 Windows应用程序开发的基础 。 所谓
API就是一系列的例程,我们编写的应用程序都是通过调用这些例程来请求操作系统完成一些低级系统应用服务 。 在
Windows图形用户界面中,应用程序的窗口,图标,菜单,
工具条,状态条,消息框和对话框等等都是由 Windows API
来管理和维护的 。
在 Microsoft Visual C++ Developer Studio中我们实现该应用程序可以按下面的步骤:
1,启动 Visual C++,选择 File菜单下的 New命令,指定工程类型和类型名为 SdkEx11 ( 即在 Project Name 中输入
SdkEx11),然后指定工程存放位置 ( 即在 Location中输入位置,通常是自己在硬盘上建立一个子目录,这里选择就可以了 ) 和指定 PlatForm为 Win32。
2,选择 File菜单下 new命令,再选择 File属性页下的 C++
Source File,然后再在 Filename编辑框中输入 sdkMain。
3,单击 Build菜单下的 Build SdkEx11.exe或 Build All或按下快捷键 F7 (如果未对该快捷键做过自定义操作的话 )或单击
Build或 Build Minibar工具条上的按钮,编译并创建可执行文件 SdkEx11.exe,运行该可执行文件 。
Windows SDK编写 Windows应用程序的全过程,
首先,我们编写了一个 WinMain() (所有 Windows应用程序的起始点)的源代码模块,在其中我们需要编写初始化应用程序的代码,注册窗口类,创建窗口,再就是一个消息循环(在编写的各类程序中,消息循环的变化不大),
其次 是编写一个窗口回调过程。如果应用程序中使用了对话框,还需要使用某种资源编辑器或通过手写 RC文件来创建它们。 然后 再为每个对话框写一个对话框过程等。这样才能使对话框同应用程序挂接上,从而保证在适当的时候对话框能够出现。在应用程序中,我们需要创建一个大的
switch语句,其中用 case语句来对应每个需要处理的
Windows消息。对于每个 case语句,还得记住如何判别由
Windows传递过来的参数(在 LPARAM和 WPARAM变量中),以保证传回给 Windows正确值(或调用
DefWndProc)。
Visual C++是世界上最受欢迎的程序设计语言之一。但是,现在许多人都认为 Visual
C++太难学、太烦琐、太灵活了,Windows
程序设计语言有诸如 Visual BASIC,Delphi等
RAD开发工具语言,我们为什么非要选学
Visual C++呢?但是,作为一个真正的程序员还是应该要学习使用 Visual C++编程工具。
首先,Visual C++是基于 MFC开发应用程序的工具。
MFC基本上是对 Windows API的 C++类封装。 Microsoft
Windows操作系统的许多代码均是用 C/C++编写的,我们可以这样说,C/C++时是 Windows操作系统的宿主语言。
其次,Visual C++的最新特性之一具有原型能力,这一点通过增强的向导来实现的。现在,这个特性还不能把 Visual
C++提升到像 Visual Basic向导相同的水平上,但它确实减少了开发应用程序的入门时间。
再者,MFC是建立在 C++语言的基础之上,所以掌握
C/C++语言基础对软件开发很重要。我们可以利用 C++的封装性开发者可以更容易理解和操作各种窗口对象;利用 C++
的派生特性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且 C++本身所具备的超越 C语言的特性都可以使开发者编写出更易用、更灵活的代码。
另外,Visual C++也是编写 ActiveX控件以及像 ISAPI
( Internet服务器应用程序接口)扩展和 ISAPI过滤器这样针对 IIS的专用代码的理想编程环境。即使对属于快速应用程序开发环境中的应用程序编程来说,也没有人愿意花时间从
Internet上下载一个巨型控件,也同样没有人愿意让慢速的过滤器加重 Web服务器的负担。
Visual C++擅长的另一领域是数据库编程。我并不是说要使用 Visual C++编写一个功能完备的仓储控制系统,那样确实要花去很长的开发时间。然而,Internet用户也确实需要访问数据库管理者那里的数据。