为什么CopyRect WinAPI函数存在?

为什么CopyRect WinAPI函数存在?,winapi,Winapi,还有一种方法,它只是将一个RECT复制到另一个 自从我发现这个函数以来,我一直对它存在的原因感兴趣。 赋值运算符(=)或CopyMemory函数是否不适合复制RECTs?我应该尽可能地使用CopyRect函数吗?该CopyRect函数(可能)是为不允许直接赋值到结构的语言设计的!在C++中,可以有,比如:rectsrc{0,0,10,10},dst然后(某处,任何地方):dst=src。但是,有些语言不允许这样做,因此您可以使用函数来执行此操作。(我已经很久没有在Pascal中写任何东西了,但是

还有一种方法,它只是将一个
RECT
复制到另一个

自从我发现这个函数以来,我一直对它存在的原因感兴趣。
赋值运算符(
=
)或
CopyMemory
函数是否不适合复制
RECT
s?我应该尽可能地使用
CopyRect
函数吗?

CopyRect
函数(可能)是为不允许直接赋值到结构的语言设计的!在
C++
中,可以有,比如:
rectsrc{0,0,10,10},dst然后(某处,任何地方):
dst=src。但是,有些语言不允许这样做,因此您可以使用函数来执行此操作。(我已经很久没有在
Pascal
中写任何东西了,但是你会如何在那里写呢?或者在
COBOL
?)


当然,对于像
SetRect()
EqualRect()
这样的函数,也可以使用类似的参数。但是,您的问题的答案主要取决于您使用的语言(标记中未指定),并且如果语言允许,还取决于您个人的编码偏好。(但请注意,如果考虑效率,调用
WinAPI
函数将始终涉及实际调用,而不是内联!)

CopyRect
是一个旧函数,它在Win32 API中出现主要是为了比较,如
WinExec
GetVersion
等。其源代码非常简单:

启动时,它检查两个参数的
NULL
值,然后通过中间寄存器将源记录的4个成员复制到目标。如果您使用
RECT
指针进行操作,那么使用此函数可能有意义。否则,直接分配要便宜得多

复制一个
RECT
会生成一堆代码
CopyRect
在我们只有256KB内存的时代节省了内存


现在,我们不必使用它,因为手动复制
RECT
只需几条指令即可完成。

在pascal中分配记录没有问题