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
框架类、文档类、视图类的关系,等内容,参阅相关资料;