WndObjContainer.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 界面窗口体系结构--容纳游戏对象的窗口
  3. // Copyright : Kingsoft 2002
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2002-9-25
  6. *****************************************************************************************/
  7. #pragma once
  8. #include "Windows.h"
  9. #include "WndWindow.h"
  10. #include "../Elem/WndMessage.h"
  11. #define OBJCONT_S_ENABLE_CLICK_EMPTY 0x00008000
  12. #define OBJCONT_S_ACCEPT_FREE 0x00004000
  13. #define OBJCONT_S_HAVEOBJBGCOLOR 0x00002000 //放有物品时是否有背景色
  14. #define OBJCONT_S_TRACE_PUT_POS 0x00001000
  15. #define OBJCONT_S_DISABLE_PICKPUT 0x00000800 //不允许拿起东西
  16. #define OBJCONT_F_MOUSE_HOVER 0x00000400
  17. //============================
  18. // 单个对象的容器窗口
  19. //============================
  20. class KWndObjectBox : public KWndWindow
  21. {
  22. public:
  23. KWndObjectBox();
  24. virtual int Init(KIniFile* pIniFile, const char* pSection); //初始化
  25. void LoadScheme(const char* pScheme); ///载入界面方案
  26. void Celar(); //清除对象物品
  27. void SetObjectGenre(unsigned int uGenre); //设置可以容纳的对象的类型
  28. int GetObject(KUiDraggedObject& Obj) const; //获取容纳的对象信息
  29. void HoldObject(unsigned int uGenre, unsigned int uId, int nDataW, int nDataH);//设置容纳的对象
  30. void Clone(KWndObjectBox* pCopy);
  31. void SetContainerId(int nId);
  32. void EnablePickPut(bool bEnable);
  33. protected:
  34. virtual int WndProc(unsigned int uMsg, unsigned int uParam, int nParam);//窗口函数
  35. int DropObject(bool bTestOnly); //放置物品
  36. void PaintWindow(); //窗体绘制
  37. unsigned int m_uAcceptableGenre; //可接纳的对象类型
  38. KUiDraggedObject m_Object;
  39. int m_nContainerId;
  40. };
  41. //============================
  42. // 容纳多个对象的容器窗口
  43. //============================
  44. class KWndObjectMatrix : public KWndWindow
  45. {
  46. public:
  47. KWndObjectMatrix();
  48. virtual ~KWndObjectMatrix();
  49. virtual int Init(KIniFile* pIniFile, const char* pSection); //初始化
  50. void Clear(); //清除全部的对象物品
  51. int AddObject(KUiDraggedObject* pObject, int nCount); //增加对象物品
  52. int RemoveObject(KUiDraggedObject* pOjbect); //减少一个对象物品
  53. int GetObject(KUiDraggedObject& Obj, int x, int y) const;//获取容纳的某个对象信息
  54. // int GetObjects(KUiDraggedObject* pObjects, int nCount) const;//获取容纳的对象信息
  55. void EnableTracePutPos(bool bEnable);
  56. void SetContainerId(int nId);
  57. void EnablePickPut(bool bEnable);
  58. protected:
  59. void Clone(KWndObjectMatrix* pCopy);
  60. private:
  61. virtual int WndProc(unsigned int uMsg, unsigned int uParam, int nParam); //窗口函数
  62. void PaintWindow(); //窗体绘制
  63. int GetObjectAt(int x, int y); //获得某个位置上的物品的索引
  64. int PickUpObjectAt(int x, int y); //捡起某个位置上的对象
  65. int DropObject(int x, int y, bool bTestOnly); //放置物品
  66. int TryDropObjAtPos(const RECT& dor, KUiDraggedObject*& pOverlaped);//尝试放置物品
  67. void DropObject(int x, int y, KUiDraggedObject* pToPickUpObj); //放下物品
  68. protected:
  69. int m_nNumUnitHori; //横向格数
  70. int m_nNUmUnitVert; //纵向格数
  71. int m_nUnitWidth; //横向格宽
  72. int m_nUnitHeight; //纵向格宽
  73. int m_nUnitBorder; //格子的边框的宽高度
  74. int m_nNumObjects; //容纳的对象的数目
  75. KUiDraggedObject* m_pObjects; //容纳的对象列表
  76. int m_nMouseOverObj;
  77. int m_nPutPosX;
  78. int m_nPutPosY;
  79. int m_nPutWidth;
  80. int m_nPutHeight;
  81. int m_nContainerId;
  82. };
  83. void WndObjContainerInit(KIniFile* pIni);