文本输出的两个有关问题
文本输出的两个问题!
本人知道,如果希望输入的文字始终能够在窗口上显示(不管窗口滚动还是缩放),可以在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中,既能显示,又能滚动。
本人知道,如果希望输入的文字始终能够在窗口上显示(不管窗口滚动还是缩放),可以在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编程, 候捷的