文本输出的两个有关问题

文本输出的两个问题!
本人知道,如果希望输入的文字始终能够在窗口上显示(不管窗口滚动还是缩放),可以在OnDraw()函数中处理的。
问题1:
但现在想要在一菜单响应函数中实现这一功能,该怎么做呢?如下所示;(以下程序只能在一时显示,当滚动或缩放窗口后显示的内容就没了),
其中OnReadsystem() 即为菜单响应函数,Land为自定义的类,ReadSystem()为它的一成员函数。
class Land  
{
public:
Land();
  virtual ~Land();
  void ReadSystem(const char *lpszPathName); //读分类体系
  ..........
};
extern char *pBuf;

void Land::ReadSystem(const char *lpszPathName)
{  
  FILE *pFile1=fopen(lpszPathName,"r");
fseek(pFile1,0,SEEK_END);
int len=ftell(pFile1);
  pBuf=new char[len+1];
rewind(pFile1);
fread(pBuf,1,len,pFile1);
 
 }

void CClassificationSystemView::OnReadsystem() 
{  
Land land1;
char *p1="file.txt";
land1.ReadSystem(p1);
CDC *pDC=GetDC();
  pDC->DrawText(pBuf,CRect(0,0,3000,3000),DT_LEFT);
   

}
问题2:以上程序显示结果是只能显示一页的内容(已实现窗口滚动功能),我的文本文件内容未能完全显示,怎样才能让我的文本文件内容全部显示呢?:(本人初学者,希望能给点代码提示一下)


------解决方案--------------------
你的菜单中只是确定需要显示的内容,通过一些变量来指定,然后刷新。比如这里,你需要的是将读入的数据放入一个变量,这个变量改成类的成员变量即可(你用外部全局变量也可以)。具体的显示,比如DrawText,放到OnDraw中。比如你这里,可以把pBuf初始化为NULL,在OnDraw中判断pBuff不为NULL时才绘制。
绘制的时候,根据滚动条的位置确定需要绘制的部分,在响应滚动条消息的时候只需要设置滚动条位置和刷新即可。
------解决方案--------------------
从CEditView派生。文件读入到Edit中,既能显示,又能滚动。
C/C++ code
CMyEditView::OnInitialUpdate()
{
   // get the edit control and set some initial properties for it
   CEdit& theEdit = GetEditCtrl();

   // adjust the left margin without changing the right margin
   DWORD dwMargins = theEdit.GetMargins();
   theEdit.SetMargins(20, HIWORD(dwMargins));

   // only accept 10k of text
   theEdit.SetLimitText(10 * 1024);
}

------解决方案--------------------
pDC- >DrawText(pBuf,len,CRect(0,0,3500,3500),DT_LEFT); 

----


pDC->DrawText(pBuf, CRect(0,0,3500,3500), DT_LEFT);
------解决方案--------------------
windows编程, 候捷的