There is no difference between the two, as described in the MSDN article. To understand why they both exist, you need to go back in history, go back to Windows version 3 and earlier. These were 16-bit versions of Windows, unlike the versions of Windows that everyone uses today. The Windows SDK version for Windows 3.1 declared a RECT structure like this in windows.h:
typedef struct tagRECT { int left; int top; int right; int bottom; } RECT;
And the ole2.h header file declared RECTL, using long for structure elements. The 16-bit C and C ++ compilers then implemented int as a 16-bit type, setting the word size of a 16-bit processor and implemented as a 32-bit type.
The 32-bit compilers used in modern versions of Windows have made a 32-bit type that matches the word size of a 32-bit processor. And stored for a long time, like a 32-bit type. Because of this, the difference between the two types of structure disappears.
source share