Windows代码规则

本文介绍了Windows编程中的基本数据类型及指针类型,并解释了BOOL类型的实际应用方式,同时介绍了匈牙利标记法及其在变量命名中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初次接触Windows编程,发现代码通篇都是奇奇怪怪的东西。像DWORD_PTRDWORD_PTR这些东西,让人很是迷惑。本来入门还算容易,结果因为这些奇奇怪怪的东西,生生拖延了很多时间。看起来实在费劲。故需先跟他们混个眼儿熟,以便他们奇怪的外形不至于让开发者看着眼晕。文章内容很多都参考了官方文档,若有翻译不准确的请温柔地指出。

先来看下这群奇怪的东西分别所占的位数。

BYTE8 bitsUnsigned
DWORD32 bitsUnsigned
INT3232 bitsSigned
INT6464 bitsSigned
LONG32 bitsSigned
LONGLONG64 bitsSigned
UINT3232 bitsUnsigned
UINT6464 bitsUnsigned
ULONG32 bitsUnsigned
ULONGLONG64 bitsUnsigned
WORD16 bitsUnsigned

他们的值其实都是整型数值,size是固定的,不管是在32位机上还是64位计算机上,大小都不变。

BOOL类型

BOOL是用在Boolean环境中的整型数值。0代表false,1代表true。

#define FALSE    0 
#define TRUE     1

事实上,任何非0数值都能表示true,很多方法返回的bool类型,但返回值可能不1,所代表含义也是true。所以不能简单地判断方法返回值是否为TRUE。

以下的写法是正确的。

// Right way.
BOOL result = SomeFunctionThatReturnsBoolean();
if (result) 
{ 
    ...
}

以下的写法是错误的。

// Wrong!
if (result == TRUE) 
{
    ... 
}

需要注意的是,BOOL是整型,不同于C++中的bool类型。

指针类型

Windows中有很多以P或LP为前缀的类型,例如LPRECT,是RECT类型的指针,而RECT是描述矩形的结构体。

RECT*  rect;  // Pointer to a RECT structure.
LPRECT rect;  // The same
PRECT  rect;  // Also the same.

P和LP在以前是有区别的,如今没什么区别。都代表指针。

有精度的指针类型

以下数据类型的size取决于编译环境,在32位机上是32位,在64位机上是64位。32位的应用运行在64位机上,其类型还是4字节,但64位的应用不能再32位的环境中运行。

  • DWORD_PTR
  • INT_PTR
  • LONG_PTR
  • ULONG_PTR
  • UINT_PTR

以上用适用于需要整型类型指针的情况。他们用于为指针算法定义变量,定义循环计数器来遍历缓存中的所有字节。通常情况下,他们出现在64位操作系统中将现有32位扩展为64位的地方。

匈牙利标记法

此法在定义变量名的时候加前缀来表示额外的信息。有的告诉你变量的类型,也有的表示语义信息,告诉你变量的预期用途。

例如 i 表示  index ,cb表示字节数, rw表示行,col表示列。如果你看到一个表达式是rwPosition + cbTable,便可怀疑这是一个错误,因为行的位置不能和字节数相加,逻辑上没有意义。

Windows编程中很多都用匈牙利表示法,所以需要了解一下。

Windows 2000,原名Windows NT 5.0。它结合了Windows 98和Windows NT 4.0的很多优良的功能/性能与一身,超越了Windows NT的原来含义。   Windows 2000系列分成四个产品:Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, Windows 2000 Datacenter Server。 Windows 2000 Professional 是一个商业用户的桌面操作系统,也适合移动用户,是Windows NT Workstation 4.0的升级。Windows 2000 Server和Advanced Server分别是Windows NT Server 4.0及其企业版的升级产品。Windows 2000 Datacenter Server是一个新的品种,主要通过OEM的方式销售,是,支持32个以上的CPU和64GB的内存,以及4个节点的集群服务。 Windows 2000平台包括了Windows 2000 Professional 和Windows 2000 Server前后台的集成,下面仅从五个方面简要地介绍一下它的新特性和新功能。   一、活动目录   Windows 2000 Server在Windows NT Server 4.0的基础上,进一步发展了“活动目录(Active Directory)”。活动目录是从一个数据存储开始的。它采用了类似Exchange Server的数据存储,称为:Extensible Storage Service (ESS)。其特点是不需要事先定义数据库的参数,可以做到动态地增长,性能非常优良。这个数据存储之上已建立索引的,可以方便快速地搜索和定位。活动目录的分区是“域(Domain)”,一个域可以存储上百万的对象。域之间还有层次关系,可以建立域树和域森林,无限地扩展。   在数据存储之上,微软建立了一个对象模型,以构成活动目录。这一对象模型对LDAP有纯粹的支持,还可以管理和修改Schema。Schema包括了在活动目录中的计算机、用户和打印机等所有对象的定义,其本身也是活动目录的内容之一,在整个域森林中是唯一的。通过修改Schema的工具,用户或开发人员可以自己定义特殊的类和属性,来创建所需要的对象和对象属性。   活动目录包括两个方面:一个目录和与目录相关的服务。目录是存储各种对象的一个物理上的容器;而目录服务是使目录中所有信息和资源发挥作用的服务。活动目录是一个分布式的目录服务。信息可以分散在多台不同的计算机上,保证快速访问和容错;同时不管用户从何处访问或信息处在何处,都对用户提供统一的视图。 活动目录充分体现了微软产品的“ICE”,即集成性(Integration),深入性(Comprehensive),和易用性(Ease of Use)等优点。活动目录是一个完全可扩展,可伸缩的目录服务,既能满足商业ISP的需要,又能满足企业内部网和外联网的需要 最近在网上游荡的时候发现msdos和windows 2000的原代码 ,不敢独享,所以分享给大家
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值