【关于MFC 单文档的问题 】 我在Doc类里面 用串行化 读取了一大段 CString str现在我要在view里 显示这些内容那么 在view类的 ondraw 里怎么调用doc类的str呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CYouSDIDoc *pDoc=GetDocument();pDoc->str; 使用这个CDocument* GetDocument( ) const; 看看View类的OnDraw函数中的前两句 CXDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);pDoc->..... CReadTxTDoc* pDoc = GetDocument(); pDoc->str; ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 TextOut(0,0,str);还是说 “str”: 未声明的标识符 我也在 XXview.cpp中包含了 doc.h现在代码如下 报错 str 未声明void CReadTxTView::OnDraw(CDC* pDC){ CReadTxTDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 pDC->TextOut(0,0,str.GetBuffer(20));} 你的str是类的成员变量?你不会定义成类成员函数里的临时变量了吧? 定义的是 doc类的全局变量#pragma onceclass CReadTxTDoc : public CDocument{protected: // 仅从序列化创建 CReadTxTDoc(); DECLARE_DYNCREATE(CReadTxTDoc)// 属性public:// 操作public:// 重写public: virtual BOOL OnNewDocument(); virtual void Serialize(CArchive& ar);// 实现public: virtual ~CReadTxTDoc();#ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const;#endifprotected:// 生成的消息映射函数protected: DECLARE_MESSAGE_MAP()public: CString str; //定义这里}; 晕,应该是这样的pDC->TextOut(0,0,pDoc->str); 啊 谢谢 出来了但是只有一行 能再帮忙看看吗?我在DOC类的串行化里这样读取的while(ar.ReadString(strline)) { str+=strline; str+="\r\n"; }View里是这样输出的void CReadTxTView::OnDraw(CDC* pDC){ CReadTxTDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 pDC->TextOut(0,0,pDoc->str);} 准确的说是三行内容是================================================================================ MICROSOFT 基础类库: ReadTxT 项目概述===============================================================================应用程序向导已为您创建此 ReadTxT 应用程序。此应用程序不仅演示使用 Microsoft 基础类的基本知识,而且可作为编写应用程序的起点。此文件包含组成 ReadTxT 应用程序的各个文件的内容摘要。ReadTxT.vcproj 这是使用应用程序向导生成的 VC++ 项目的主项目文件但是只显示前三行 并且是输出成一行了 pDC->DrawText(pDoc->str,CRect(0,0,200,100),DT_LEFT); 那个Rect是可以变化的啊,你想在哪里输出就输出到哪里啊 CButton类的::SetCursor与SetCursor疑问 明天要去面试 有问题请教 API函数中带最后两个字符"Ex"代表什么呢? 视图指针 这里总是说我语法错误,郁闷 IP地址如何转化? 我想监控一个程序的所有消息包括弹出一个窗口怎么做? 如何在2000下访问特定端口 C/C++的思索 C++之父访谈录 这个问题实在不敢麻烦高手 :) 对话框刷新时出现的问题 VC++,一个简单的画图软件
pDoc->str;
CDocument* GetDocument( ) const;
ASSERT_VALID(pDoc);
pDoc->.....
pDoc->str;
ASSERT_VALID(pDoc);
if (!pDoc)
return; // TODO: 在此处为本机数据添加绘制代码
TextOut(0,0,str);还是说 “str”: 未声明的标识符
中包含了 doc.h现在代码如下 报错 str 未声明void CReadTxTView::OnDraw(CDC* pDC)
{
CReadTxTDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);
if (!pDoc)
return; // TODO: 在此处为本机数据添加绘制代码
pDC->TextOut(0,0,str.GetBuffer(20));
}
你不会定义成类成员函数里的临时变量了吧?
定义的是 doc类的全局变量
#pragma once
class CReadTxTDoc : public CDocument
{
protected: // 仅从序列化创建
CReadTxTDoc();
DECLARE_DYNCREATE(CReadTxTDoc)// 属性
public:// 操作
public:// 重写
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);// 实现
public:
virtual ~CReadTxTDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endifprotected:// 生成的消息映射函数
protected:
DECLARE_MESSAGE_MAP()
public:
CString str; //定义这里
};
啊 谢谢 出来了但是只有一行 能再帮忙看看吗?我在DOC类的串行化里这样读取的while(ar.ReadString(strline))
{
str+=strline;
str+="\r\n";
}View里是这样输出的void CReadTxTView::OnDraw(CDC* pDC)
{
CReadTxTDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);
if (!pDoc)
return; // TODO: 在此处为本机数据添加绘制代码
pDC->TextOut(0,0,pDoc->str);
}
MICROSOFT 基础类库: ReadTxT 项目概述
===============================================================================应用程序向导已为您创建此 ReadTxT 应用程序。此应用程序不仅演示使用 Microsoft 基础类的基本知识,而且可作为编写应用程序的起点。此文件包含组成 ReadTxT 应用程序的各个文件的内容摘要。ReadTxT.vcproj
这是使用应用程序向导生成的 VC++ 项目的主项目文件但是只显示前三行 并且是输出成一行了