在COMMCTRL.H文件中这样定义的结构体真是不懂有什么意义?什么成员数据也没有,空的结构体还是第一次见到,请大家不吝赐教!

解决方案 »

  1. 正如xxben(001)所说:
    应该只是前向申明而已
    实际的定义可以看一下这里,不过实际对应MS的哪个.h文件
    http://www.reactos.org/generated/doxygen/d0/d37/imagelist_8h-source.html
     
      

  2. 马甲??
    ---------------------------
    Bingo,另一个ID没分了,只好用这个^_^谢谢大家的关注和参与,事情是这样的:从网上下了一个关于改变CListCtrl控件显示风格的范例,里面用到了如下定义:HIMAGELIST hList = ImageList_Create(32,32, ILC_COLOR8 |ILC_MASK , 8, 1);我用F12查看HIMAGELIST的定义:struct _IMAGELIST;
    typedef struct _IMAGELIST NEAR* HIMAGELIST;再详细的信息就没了,所以觉得非常奇怪,才上来问大家,不知道这样定义的东西如何用?
      

  3. 从MSDN上查了一下HIMAGELIST,这个关键字在CImageList类中被重载成了一个操作运算符,其作用是获得一个CImageList对象的句柄;搜索_IMAGELIST却一点结果也没有,困惑中......
      

  4. 类似这样的还有:
    struct __POSITION { };
    typedef __POSITION* POSITION;
      

  5. 类似这样的还有:
    struct __POSITION { };
    typedef __POSITION* POSITION;
    =========
    查了一下
    This structure can point to any element in a linked list, including null elements (such as an end-of-list er). This structure will, however, become invalid if you delete the item it points to. 
    ========
    俺翻译一下,(正好碰到几句看得懂的,呵):
    __POSITION结构体能指向链表中的任意元素,包括空元素比如结束符.当被指向的元素被删除时,结构体失效.
    好像与一般没两个下划线的POSITION没什么两样呢.
    俺也是个喜欢穷根究底的人.
    各位星爷去哪里了,都没来呢.
      

  6. 是不是我提问的方式不对,大家都没看明白我想问的是什么呢?
    struct _IMAGELIST;以及struct __POSITION { };这样定义的空结构体可不可以看成是void类型的呢?
      

  7. struct __POSITION{}表位置泛指.与void*表指针泛指一样.
      

  8. 通过对范例代码的学习,对这个问题我有了初步的了解。同意楼上zephyr007(道可道)朋友的见解。只是不明白他们为何多此一举,直接用(void*)这样的地址指针不是一样吗?
      

  9. 结贴了,虽然没有得到一个权威的答案,不过在实际中这样声明的结构体如车神和道可道两位朋友所说的,“相当”于void这样的类型。
    谢谢大家的参与!!
      

类似问题 »