最近在学习Hoops 的引擎(http://www.hoops3d.com )
模拟它的MVO架构,不过没有原代码,所以很难a
设计了一个交互绘图基本类,
但是还有错误,鼠标左键点击两下
winGDI.cpp中出错。
请大虾指教一二。
我已经在这个问题上花了很多的心思。
其中最重要的就是Painter抽象类的设计
他的子类QBufferDC继承CDC
而SGView包含Painter指针,方便在SGView ::drawEntity调用。
SGObject - 对象的抽象类,也就是几何对象
SGModel- 负责对象管理,没有实现所有的功能,准备用SceneTree来实现
SGView - 负责显示SGModel中的数据,关键的函数
void SGView::drawEntity(SGObject* pObj)
{
pObj->draw(m_pPainter,this)
}
Painter - 封装CDC的功能,见代码
在CSGView创建的时候创建Painter对象
很可能这里有问题!!!!!
void CSGView::OnCreate(..)
{
CDC* pDC = GetDC();
Painter* painter = new QBufferDC(pDC);
m_pSGView->setPainter(painter);
}
MFC 相关的Document/View架构
CSGDocument - 管理SGModel
CSGView - 和SGView建立联系,并负责把windows的消息发送给SGView
见原代码
SGActionManager - 负责工具的管理
SGBaseAction - 工具的抽象基类
SGActionDrawLine - 绘制直线的工具
源代码连接:
http://www.cppblog.com/Files/richardzeng/MVOTest.rar