ReDo UnDo的好例子

时间:2013-01-25 10:08:26
【文件属性】:

文件名称:ReDo UnDo的好例子

文件大小:24KB

文件格式:RAR

更新时间:2013-01-25 10:08:26

重做 撤销 Demo

一个非常好的例子 void CMyObjCollection::Add(CMyObject* pItem) { ASSERT(Find(pItem) == -1); // 不能多次加入同一对象 m_vecMyObjects.push_back(pItem); pItem->AddRef(); } void CMyObjCollection::Remove(CMyObject* pItem) { for (vector::iterator it = m_vecMyObjects.begin(); it != m_vecMyObjects.end(); it++) { if (*it == pItem) { m_vecMyObjects.erase(it); pItem->Release(); return; } } } void CMyObjCollection::RemoveAt(int index) { CMyObject* pItem = m_vecMyObjects[index]; m_vecMyObjects.erase(m_vecMyObjects.begin() + index); pItem->Release(); } void CMyObjCollection::Clear() { for (int i = 0; i < m_vecMyObjects.size(); i++) m_vecMyObjects[i]->Release(); m_vecMyObjects.erase(m_vecMyObjects.begin(), m_vecMyObjects.end()); } bool CMyObjCollection::Contains(CMyObject* pItem) { return (Find(pItem) != -1); } int CMyObjCollection::Find(CMyObject* pItem) { for (int i = 0; i < m_vecMyObjects.size(); i++) { if (m_vecMyObjects[i] == pItem) return i; } return -1; }


【文件预览】:
TestUndo
----TestUndo.h(1KB)
----MyObject.cpp(790B)
----TestUndoDoc.h(2KB)
----StdAfx.cpp(210B)
----TestUndoView.h(2KB)
----Command.h(3KB)
----MyObjCommand.h(1KB)
----TestUndo.suo(9KB)
----MainFrm.h(2KB)
----TestUndoView.cpp(4KB)
----MyObjCollection.h(1KB)
----StdAfx.h(1KB)
----TestUndo.cpp(4KB)
----MainFrm.cpp(2KB)
----TestUndoDoc.cpp(2KB)
----Resource.h(595B)
----TestUndo.sln(881B)
----TestUndo.vcproj(10KB)
----res()
--------TestUndo.rc2(400B)
--------TestUndoDoc.ico(1KB)
--------TestUndo.ico(1KB)
--------Toolbar.bmp(1KB)
----ChildFrm.cpp(1KB)
----TestUndo.rc(13KB)
----MyObjCollection.cpp(2KB)
----ChildFrm.h(1KB)
----MyObjCommand.cpp(1KB)
----MyObject.h(747B)

网友评论