句柄的定义

    技术2024-10-21  23

    举HBITMAP的例子,

    在windef.h中对句柄有一个定义的宏 :DECLARE_HANDLE()

    在winNT.h中又有 DECLARE_HANDLE(HBITMAP);  

    具体展开:

     

    #define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name

     

    我们知道 ,  "##" 是"沾黏符"

     展开就是:

     

     

     

    struct HBITMAP__ { int unused; }; typedef struct HBITMAP__ * HBITMAP ;

    所以 HBITMAP hBitmap; 就是 HBITMAP__* hBitmap ; 

    而由于HBITMAP__ 只有一个成员变量, 可以不考虑字节对齐,

    所以 HBITMAP hBitmap; 也就相当于 int* hBitmap;

    最新回复(0)