Windows程序设计(第五版)第一章 总结

WIN32程序设计(第五版) 第一章(WINDOW环境) 重点提要

windows简史

MS-DOSMS-DOS 是一个小型的作业系统
MS-DOS 提供给用户一种命令列介面,提供如 DIR和 TYPE 的命令,也可以将应用程式载入内存执行。对于应用程序写作者,它提供了一组函式呼叫,进行档案的输入输出(I/O )。对于其他的周边处理——尤其是将文字或图形写到显示器上——应用程序可以直接存取 PC 的硬件。

windows 3.1

加入特性 TrueType 字体技术(给 Windows 带来可缩放的轮廓字体 )、多媒体、物件连结和嵌入和通用对话方块。

windows NT

Windows NT 提供 32 位元平坦定址,并使用 32 位元的指令集。Windows NT 还可以移植到非 Intel 处理器上。

windows 98

Windows 98 在 1998 年 6 月发布,具有许多加强功能,包括执行效能的提高、
更好的硬体支援以及与网际网路和全球资讯网(WWW)更紧密的结合。

windows NT 和windows 98 共性

Windows 98 和 Windows NT 都是支援 32 位元优先权式多工)及多执行绪的图形作业系统。Windows 拥有图形使用者介面(GUI ),这种使用者介面也称作「视觉化介面」或「图形视窗环境」。有关 GUI的概念可追溯至 70 年代中期,GUI 是一个在个人电脑工业史上集各方面技术大成於一体的最重要产物。

windows 特性

为便于多个应用的使用,以及这些程式间资讯的交换,Windows 支援多工:
在同一时刻能有多个 Windows 程序显示并运行。每个程序在屏幕上占据一个视
窗。用户可在屏幕上移动视窗,改变它们的大小,在不同程式间切换,并从一
个程式向另一个程式传送资料。因为这些视窗看起来有些像桌面上的纸(当然,
这是电脑还未占据办公桌之前的年代),Windows 有时被称作:一个显示多个程
式的「具象化桌面」。

早期特性

Windows 的早期版本使用一种「非优先权式」的多工系统。这意味著 Windows 不使用系统计时器将处理时间分配给系统中运行的多个应用程序,程序必须自愿放弃控制以便其他程式运行。在 Windows NT 和 Windows 98 中,多工是优先权式的,而且程式自身可分割成近乎同时执行的多个执行程序(多线程)。作业系统不对记忆体进行管理便无法实现多工。当新程式启动、旧程式终
止时,记忆体会出现碎裂空间。系统必须能够将闲置的记内存组织在一起,因此系统必须能够移动记忆体中的程序和资料块。

动态连接 (dll)

Windows 上执行的程式可共用在称为「动态连接程序库」的档案中的常式。
Windows 包括一个机制,能够在执行时连结使用动态连接程序库中常式的程式。
Windows 自身基本上就是一个动态连结程式库的集合。

图形界面

Windows 是一个图形介面,Windows 程序能够在显示器和打印机上充分利用图形和格式化文字。图形介面不仅在外观上更有吸引力,而且还能够让使用者传递高层次的资讯。

WIN API

於程式写作者来说,作业系统是由本身的 API 定义的。API 包含了所有应
用程式能够使用的作业系统函式呼叫,同时包含了相关的资料型态和结构。

Windows 中,API 还意味著一个特殊的程式架构,我们将在每章的开头进行研究。一般而言,Windows API 自 Windows 1.0 以来一直保持一致,没什么重大改
变。具有 Windows 98 程式写作经验的 Windows 程式写作者会对 Windows 1.0 程式的原始码感觉非常熟悉。API 改变的一种方式是进行增强。Windows 1.0 支援不到 450 个函式呼叫,现在已有了上千种函式呼叫。

MFC VS API

学习 Windows API 将使您更深入地了解 Windows 工作的方式。API 定义了作为 Windows 程式写作者所需的一切。没有什么方法比直接使用 API 更万能的了。
MFC 尤其问题百出。虽然它大幅简化了某些工作,我却经常发现要让它们按我想的去工作时,上碰壁。MFC 还不是 Windows 程式设计者所追求的灵丹妙药,很少有人认为它是一个好的物件导向设计的模型。MFC 程式写作者从他们使用的物件类别定义如何工作中受益颇深,并会发现他们经常参考 MFC 原始码,搞懂这些原始码是学习Windows API 的好处之一。

第一个 WIN32 程序

#include <windows.h>
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox (NULL, TEXT (“Hello, Windows 98!”), TEXT (“HelloMsg”), 0);
return 0 ;
}

WINDOWS.H

WINDOWS.H 是主要的含入档案,它包含了其他 Windows 表头档案,这些表头
档案的某些也包含了其他表头档案。这些表头档案中最重要的和最基本的是:
WINDEF.H 基本型态定义。
WINNT.H 支援 Unicode 的型态定义。
WINBASE.H Kernel 函式。
WINUSER.H 使用者介面函式。
WINGDI.H 图形装置介面函式。
Windows 的所有资料型态、函式呼叫、资料结构和常数识别字。

程序进入点

正如在 C 程序中的进入点是函数 main 一样,Windows 程式的进入点是
WinMain:总是像这样出现:
int WINAPI WinMain ( HINSTANCE hInstance,HINSTANCE hPrevInstance,
PSTR szCmdLine,int iCmdShow);
inMain 函式宣告为返回一个 int 值。WINAPI 识别字在 WINDEF.H 定义,语
句如下:

define WINAPI __stdcall

WinMain 的第一个参数被称作「执行实体代号」。在 Windows 程式设计中,该代号唯一地标识该程式,还需要它在其他 Windows 函式呼叫中作为参数。**在 32 位元 Windows 版本中,该概念已被抛弃。**传给 WinMain 的第二个参数Programming Windows 总是 NULL。WinMain 的第三个参数是用于执行程序的命令列。某些 Windows 应用程序利用它在程式启动时将dll载入内存。WinMain的第四个参数指出程式最初显示的方式,可以是正常的或者是最大化地充满整个画面,或者是最小化显示在工作列中。

MessageBox 函数

MessageBox 显示的小视窗不具有什么功能,实际上它被认为是一个对话方块。
MessageBox 第一个参数通常是视窗代号
第二个参数是在讯息方块主体中显示的字串,
第三个参数是出现在讯息方块标题列上的字串。
通常您不必将所有字串都封装在 TEXT 巨集中,但如果想将您的程式转
换为 Unicode 字元集,这确是一个好主意。
MessageBox 的第四个参数可以是在 WINUSER.H 中定义的一组以字首 MB_开
始的常数的组合。
使用 C 语言的 OR(|)操作符号将上面显示的一个常数与代表内定按钮的常数组
合:
#define MB_DEFBUTTON1 0x00000000L
还可以使用一个常数指出讯息方块中图示的外观:
#define MB_ICONHAND 0x00000010L
这些图示中的某些有替代名称:
#define MB_ICONWARNING MB_ICONEXCLAMATION
MessageBox 返回数值 1,但更严格地说它返回 IDOK,IDOK 在WINUSER.H 中定义。

编译、连结和执行

在编译阶段,编译器从 C 原始码档案产生一个.OBJ(目标)。
在连结阶段,连结程式结合.OBJ 档案和.LIB(库)档案以建立.EXE(可执行)档案您会注意到 KERNEL32.LIB、USER32.LIB GDI32.LIB。
这些是三个主要 Windows 子系统的「引用程序库」。它们包含了动态连结程式库的名称以及放进.exe档案的引用资讯。
Windows 使用该资讯处理程式KERNEL32.DLL、USER32.DLL、GDI32.DLL 动态链接程库中函数的呼叫。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值