CWindowDC dc(this);
CFont font;
font.CreatePointFont(200,"楷体_GB2312",NULL);
dc.SelectObject(&font);
dc.SetTextColor(RGB(100,100,100));
dc.SetBkMode(TRANSPARENT);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
CRect re;
GetWindowRect(&re);
int cx=re.Width();
int cy=re.Height();
int x=0;
CSize szs=0;
int num=cy/tm.tmHeight;
CString * tmp=new CString[num+1];
memset(tmp,0,num+1);
static int y=0;
for(int l=0;num>l;l++)
{
for(static int i=0;szs.cx<cx;i++)
{
tmp[l]+=m_filetmp[i];//m_filetmp是文件的内容char * 类型
szs=dc.GetTextExtent(tmp[l]);
}
dc.TextOut(x,y,tmp[l]);
y+=tm.tmHeight;
}
我想写个文本文件阅读工具,想在一个页面输出多行字 和记事本一样

解决方案 »

  1.   

    问题就出在你的CString * tmp=new CString[num+1]; 
    不明白你为什么这么声明,还有显示文本文件得分页加载和显示,象你这样显示文件比较大的话,整个程序就象死了一样长时间无反应。
      

  2.   

    我就是分页加载和显示的
    tmp[xx]代表显示一行,总共在一页显示L行,,,
      

  3.   

    CString * tmp=new CString[num+1]; 
    memset(tmp,0,num+1);memset的时候出错了。tmp为指针类型,大小是4个字节,而你的num+1,应该不止4个字节吧,肯定越界了。
    按照你的本意,应该是对tmp中的每个元素进行归零吧?
    CString的默认构造函数,初始化的时候,就是空的字符串,不用归零,因此删除memset(tmp,0,num+1);即可。
      

  4.   

    CString * tmp=new CString[num+1]; 
    memset(tmp,0,num+1);memset的时候出错了。tmp为指针类型,大小是4个字节,而你的num+1,应该不止4个字节吧,肯定越界了。
    按照你的本意,应该是对tmp中的每个元素进行归零吧?
    CString的默认构造函数,初始化的时候,就是空的字符串,不用归零,因此删除memset(tmp,0,num+1);即可。