VC++ 单文档项目显示打开的文件

VC++ 新建一个单文档项目以后,直接运行;效果如下;

界面上的菜单,工具条,都是单文档项目框架自动生成;

然后选择 文件 菜单中的 打开 文件;点击后,并看不到任何反应;但是此时框架肯定进行了一些动作,保存了可以直接使用的东西;

那么如何显示打开的文件呢?

进入类向导,类名下拉选中Doc类;消息选中 OnOpenDocument;看一下此时还没有处理函数;

点击 Add Function,看下面成员函数列表,添加了函数OnOpenDocument;

点 Edit Code,可以进入编辑该函数的代码;

先在Doc类的头文件中,添加一个成员变量;用于存储打开的文件内容;

在OnOpenDocument函数中添加读取文件的代码;完成后如下;

BOOL CTest1Doc::OnOpenDocument(LPCTSTR lpszPathName) 
{
	if (!CDocument::OnOpenDocument(lpszPathName))
		return FALSE;
	
	// TODO: Add your specialized creation code here
	if(lpszPathName!=NULL) 
	{   
		CFile pCFile;
		int hResult=pCFile.Open(lpszPathName, CFile::modeReadWrite); 
		if(hResult != 0)
		{
		//       AfxMessageBox("打开文件成功");
		}
		//将文件读到dgx字符串
		CString temp;//可实现重复打开文件
		pCFile.Read(temp.GetBuffer(pCFile.GetLength()), pCFile.GetLength()); 
		temp.ReleaseBuffer();
		dgx=temp;

		pCFile.Close();
	}
	return TRUE;
}

看一下lpszPathName变量中,已经保存了选择文件的路径;这是由框架传过来的,可以直接使用;

然后在视类OnDraw函数,添加在窗口上输出文字的代码;完成后如下;

void CTest1View::OnDraw(CDC* pDC)
{
	CTest1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	pDC->DrawText(pDoc->dgx,pDoc->dgx.GetAllocLength(),CRect(50,50,500,500),DT_WORDBREAK);
}

在视类中可以获取到Doc类的成员变量pDoc->dgx的内容;然后显示;

在磁盘上新建一个测试文本,录入一首诗歌;

然后运行程序,打开测试文本;打开,即会显示;

视类的基本使用,可参阅

https://blog.csdn.net/bcbobo21cn/article/details/88097135

框架类、文档类、视图类的关系,等内容,参阅相关资料;

猜你喜欢

转载自blog.csdn.net/bcbobo21cn/article/details/88261312
今日推荐