【问题标题】:What's the difference between RECTL and RECT?RECTL 和 RECT 有什么区别?
【发布时间】:2013-01-05 14:15:18
【问题描述】:

根据 MSDN,RECT 和 RECTL 是相同的结构。它们之间有什么区别吗?如果没有的话,同时拥有它们而不是只有一个有什么意义?

【问题讨论】:

    标签: winapi


    【解决方案1】:

    它们之间没有区别,如 MSDN 文章中所述。要了解它们为何存在,您必须回顾历史,回到 Windows 版本 3 及更早版本。这些是 Windows 的 16 位 版本,与现在每个人都使用的 Windows 版本不同。 Windows 3.1 的 Windows SDK 版本在 windows.h 中声明了这样的 RECT 结构:

    typedef struct tagRECT
    {
        int left;
        int top;
        int right;
        int bottom;
    } RECT;
    

    并且 ole2.h 头文件使用 long 声明结构元素的 RECTL。当时的 16 位 C 和 C++ 编译器将 int 实现为 16 位类型,适合 16 位处理器的字长,并将 long 实现为 32-位类型。

    现代 Windows 版本中使用的 32 位编译器使 int 成为 32 位类型,适合 32 位处理器的字长。并保持 long 为 32 位类型。这使得两种结构类型之间的差异消失了。

    【讨论】:

    • 当前的RECT 定义是否有任何理由使用LONG 而不是INT
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    相关资源
    最近更新 更多