【MFC】如何读取rtf文件并进行展示

tf是微软的一个带格式的文件,比word简单,我们可以用写字板等程序打开编辑。下面以具体实例讲解如何在自己程序中展示rtf文件。

首先使用VS2022创建一个MFC的工程。

VIEW类需要选择richview类,用于展示,如下图:

运行效果如下:

在创建后获取控制界面的类:

复制代码
int CMFCApplication8View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CRichEditView::OnCreate(lpCreateStruct) == -1)
		return -1;

	CRichEditCtrl& lc = GetRichEditCtrl();
	m_pRcCtrl = &lc;
	return 0;
}

加载rtf文件并进行展示:

复制代码
void CMFCApplication8View::LoadRtfFile(CString strRTFFileName)
{
	m_pRcCtrl->SetReadOnly(FALSE);
	CString strPath;
	strPath = strRTFFileName;
	CFile m_cFile;
	BOOL b = m_cFile.Open(strPath, CFile::modeRead);
	if (b)
	{
		CArchive ar(&m_cFile, CArchive::load);
		Serialize(ar);
		ar.Close();
		m_cFile.Close();
	}
	m_pRcCtrl->SetReadOnly();
}

在菜单中增加调入入口:

复制代码
void CMainFrame::On32771()
{
	CMFCApplication8Doc* pDoc;
	POSITION pos = theApp.m_pDocTemplate->GetFirstDocPosition();
	while (pos != NULL)
	{
		pDoc = (CMFCApplication8Doc*)(theApp.m_pDocTemplate->GetNextDoc(pos));
		if (pDoc == NULL) break;

		POSITION pos1 = pDoc->GetFirstViewPosition();
		if (pos1 != NULL)
		{
			CMFCApplication8View* pView = (CMFCApplication8View*)pDoc->GetNextView(pos1);
			pView->LoadRtfFile(_T("C:/temp/MFCApplication8/x64/Debug/test.rtf"));
		}
	}
}

最后效果如图:

具体代码可以见资源

相关推荐
郑同学的笔记4 小时前
【c++随笔30】C++ 注册回调函数
开发语言·c++
lengxuenong4 小时前
树状数组 · 信息学学习手册2-离散化与逆序对
c++·学习·算法
十二4 小时前
【洛谷题解】P1115 最大子段和(前缀和 + 维护最小前缀)
数据结构·c++·算法·蓝桥杯
cu1436 小时前
细谈IT65631的具体功能与其应用
c++·单片机·嵌入式硬件
幻智星科技6 小时前
Karatsuba与CSD优化FPGA大数乘法
c++·fpga开发·密码学
flower9803237 小时前
C++消息总线软件开发框架AI重构版
c++·设计模式·架构
lengxuenong7 小时前
树状数组 · 信息学学习手册3-优化LIS
c++·学习·算法
fanfan_hongyun7 小时前
【UE5.1 创建C++文件】
c++·ue5
余额瞒着我当琳7 小时前
C++11,发展历史浅谈,初始化列表和对象初始化,右值引用和移动语义
java·开发语言·c++·算法
Tsuki_tl8 小时前
【优选算法:双指针】——复写零题解
java·c++·算法·leetcode·数组·双指针·复写零