6

MSDNによると、RECTとRECTLは同一の構造です。それらの間に違いはありますか?そうでない場合は、1つだけではなく両方を持つことの意味は何ですか?

4

1 に答える 1

10

MSDN の記事に記載されているように、両者に違いはありません。両方が存在する理由を理解するには、歴史をさかのぼる必要があります。つまり、Windows バージョン 3 以前に戻る必要があります。それらは16 ビットバージョンの Windows であり、現在誰もが使用しているバージョンの 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++ コンパイラは、16 ビット プロセッサのワード サイズに適合する 16 ビット型としてintを実装し、32 ビット型としてlongを実装していました。

最新の Windows バージョンで使用されている 32 ビット コンパイラは、intを 32 ビット型にし、32 ビット プロセッサのワード サイズに適合させました。そして、32ビット型として長く保持されます。これにより、2 つの構造タイプの違いがなくなりました。

于 2013-01-05T15:42:28.783 に答える