Doc类利用自带框架存数据
void CCADDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
//保存数据到文件
ar << m_nShapeCount;
for (int i = 0; i < m_arrShapes.GetSize(); i++)
{
CShape* pShape = NULL;
pShape = (CShape*)m_arrShapes[i];
ar << pShape;
}
}
else
{
// TODO: 在此添加加载代码,文件不为空才会走到这里
//读取时,先要读取图形数量
ar >> m_nShapeCount;
for (int i = 0; i < m_nShapeCount; i++)
{
CShape* pShape = NULL;
ar >> pShape;
m_arrShapes.Add(pShape);
}
}
}
void CShape::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if (ar.IsStoring())
{
ar << m_ptBegin << m_ptEnd << m_nType;
}
else
{
ar >> m_ptBegin >> m_ptEnd >> m_nType;
}
}
Doc和View两个文件中的数据交互
void CCADView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CCADDoc* pDoc = GetDocument();
}
void CCADDoc::Serialize(CArchive& ar)
{
POSITION pos = GetFirstViewPosition();
CCADView* view = (CCADView*)GetNextView(pos);
view->OnDraw(NULL);
}
设置Esc的响应函数
【解决方案资源管理器】->【类向导】->【消息】
void CCADView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if (nChar == VK_ESCAPE)
{
// 处理按下 Esc 键的逻辑,例如停止编辑
m_bEscKeyPressed = true;
}
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
参考链接:
画图程序:
MFC基于单文档实现绘图功能(线段,矩形,椭圆,圆,铅笔,橡皮),保姆式教程_mfc单文档画图_十有八九&的博客-CSDN博客
COM组件:
VS2012创建ATL工程及使用MFC测试COM组件_xhubobo的博客-CSDN博客
MFC DLL创建:
MFC创建、调用Dll的方法_mfc dll_叶子昂昂Ang的博客-CSDN博客
保存数据:
http://www.it165.net/pro/html/201408/19376.html
类调用:
MFC doc类,view类,frame类之间互相调用_LiberHW的博客-CSDN博客