MFC 单文档模式

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博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MFC (Microsoft Foundation Class)是一种用于Windows平台的应用程序开发框架,它提供了一套面向对象的类库,可以简化Windows应用程序的开发过程。多文档多视图是MFC框架中的一种常见应用模式,它允许用户同时打开多个文档,并在多个视图中显示这些文档的不同部分。 在MFC中,实现多文档多视图应用最关键的是建立一个文档类(CDocument)和至少一个视图类(CView)。文档类用于管理文档的数据和状态,而视图类则用于显示文档的内容,可以有不同类型的视图类对应不同的展示方式。通常情况下,一个应用程序可以有多个文档对象,每个文档对象可以对应多个视图对象。 在源代码中,可以通过继承MFC框架提供的基础类来实现文档类和视图类。文档类必须继承自CDocument类,并且需要重写其中的一些虚函数来处理文档的打开、保存、关闭等操作。视图类则需要继承自CView类,并且需要重写其中的一些虚函数来处理显示文档内容、用户交互等操作。在视图类中,通常需要处理绘图相关的操作,通过GDI(图形设备接口)来绘制文档内容。 在主应用程序中,还需要建立一个框架窗口类(CFrameWnd)来容纳多个视图对象。框架窗口类也需要继承自MFC框架提供的基础类,并在其中创建和管理文档对象和视图对象。用户可以通过菜、工具栏等交互方式来打开、关闭、保存文档,以及在视图中进行操作。 总的来说,实现MFC文档多视图应用的源代码需要建立文档类、视图类和框架窗口类,并通过继承MFC框架提供的基础类来实现文档管理和视图显示的功能。通过合理的设计和编码,可以实现一个灵活、可扩展的多文档多视图应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值