#pragma once #include #include "propertyGrid.h" class Instance { public: Instance(void); Instance(const Instance&); virtual ~Instance(void); std::string name; virtual void render(RenderDevice*); std::vector children; // All children. std::string getClassName(); virtual Instance* findFirstChild(std::string); std::vector getChildren(); std::vector getAllChildren(); void setParent(Instance*); void addChild(Instance*); void removeChild(Instance*); Instance* getParent(); virtual Instance* clone() const { return new Instance(*this); } virtual std::vector getProperties(); virtual void PropUpdate(LPPROPGRIDITEM &pItem); protected: std::string className; Instance* parent; // Another pointer. PROPGRIDITEM createPGI(LPSTR catalog, LPSTR propName, LPSTR propDesc, LPARAM curVal, INT type); };