From 268a0cd2eec5e066072577e4e181588692f2c652 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Mon, 22 Oct 2018 22:01:46 -0700 Subject: [PATCH] Keep getting access violation exceptions --- Instance.cpp | 17 +++++++++-------- Instance.h | 2 +- Property.cpp | 3 ++- Property.h | 4 ++-- PropertyWindow.cpp | 4 ++-- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Instance.cpp b/Instance.cpp index 2c63880..228cbf1 100644 --- a/Instance.cpp +++ b/Instance.cpp @@ -33,14 +33,15 @@ void Update(PROPGRIDITEM) void Instance::initProperties() { - ::PROPGRIDITEM pItem; - pItem.lpszCatalog="Test"; - pItem.lpszPropName="Offset"; - pItem.lpszzCmbItems="What"; - pItem.lpszPropDesc="Description"; - pItem.lpCurValue=(LPARAM)"0, 0, 0"; - pItem.iItemType=PIT_EDIT; - properties.push_back(Property(pItem, Update)); + PROPGRIDITEM * pItem = new PROPGRIDITEM(); + pItem->lpszCatalog="Test"; + pItem->lpszPropName="Offset"; + pItem->lpszzCmbItems="What"; + pItem->lpszPropDesc="Description"; + pItem->lpCurValue=(LPARAM)"0, 0, 0"; + pItem->iItemType=PIT_EDIT; + PropGrid_ItemInit((*pItem)); + properties.push_back(new Property(pItem, Update)); } diff --git a/Instance.h b/Instance.h index 68b770c..ef92e69 100644 --- a/Instance.h +++ b/Instance.h @@ -5,7 +5,7 @@ class Instance { public: - std::vector properties; + std::vector properties; Instance(void); Instance(const Instance&); virtual ~Instance(void); diff --git a/Property.cpp b/Property.cpp index c1c5dd3..b8862d4 100644 --- a/Property.cpp +++ b/Property.cpp @@ -1,6 +1,6 @@ #include "Property.h" -Property::Property(PROPGRIDITEM item, void(*onPropUpdate)(PROPGRIDITEM)) +Property::Property(PROPGRIDITEM * item, void(*onPropUpdate)(PROPGRIDITEM)) { this->callbackFuncOnChange = onPropUpdate; this->item = item; @@ -8,6 +8,7 @@ Property::Property(PROPGRIDITEM item, void(*onPropUpdate)(PROPGRIDITEM)) Property::~Property(void) { + delete item; } void Property::updateProperty(PROPGRIDITEM item) diff --git a/Property.h b/Property.h index a06738a..793db69 100644 --- a/Property.h +++ b/Property.h @@ -5,8 +5,8 @@ class Property { public: void(*callbackFuncOnChange)(PROPGRIDITEM); - PROPGRIDITEM item; - Property(PROPGRIDITEM item, void(*onPropUpdate)(PROPGRIDITEM)); + PROPGRIDITEM * item; + Property(PROPGRIDITEM * item, void(*onPropUpdate)(PROPGRIDITEM)); ~Property(void); void updateProperty(PROPGRIDITEM); }; diff --git a/PropertyWindow.cpp b/PropertyWindow.cpp index c0c176a..367b161 100644 --- a/PropertyWindow.cpp +++ b/PropertyWindow.cpp @@ -111,10 +111,10 @@ void PropertyWindow::_redraw() void PropertyWindow::SetProperties(Instance * instance) { - PropGrid_ResetContent(_propGrid); + //PropGrid_ResetContent(_propGrid); for(size_t i = 0; i < instance->properties.size(); i++) { - PropGrid_AddItem(_propGrid, &instance->properties.at(i)); + PropGrid_AddItem(_propGrid, instance->properties.at(i)->item); } SetWindowLongPtr(_propGrid,GWL_USERDATA,(LONG)this); _redraw();