主页 > 原创 > 通过与(&)、或(|)运算将基础结构体转换为DWORD_PTR

通过与(&)、或(|)运算将基础结构体转换为DWORD_PTR

在基础结构体中封装了对象的id(int)和类型(enum),通过如下的结构体定义实现与DWORD_PTR之间的转换,其中将id放在低16位,将type放在高16位。这样可以快速的将数据储存到listctrl、combo等mfc视图中(SetItemData(int, DWORD_PTR)函数):

 typedef struct tagMineObject{
   tagMineObject(){
      id = -1;
      type = MINE_OBJECT_NONE;
    }
   tagMineObject(int id, MINE_OBJECT_TYPE type){
     this->id = id;
      this->type = type;
    }

   tagMineObject(DWORD_PTR ptr){
     id = (int)(ptr & 0x0000ffff);
     type = (MINE_OBJECT_TYPE)(int)((ptr & 0xffff0000)>>16);
   }

   inline operator const DWORD_PTR() const
   {
     return (DWORD_PTR)((WORD)id|(((DWORD)(BYTE)(type))<<16));
   }

   int id;
   MINE_OBJECT_TYPE type;
  } MineObject;

Tags: DWORD_PTR 结构体

发表评论

电子邮件地址不会被公开。 必填项已用*标注