想多行显示从文本中读取得内容,下面的程序无法实现,求高人给看看。我快疯了。
void CGUETHCUsbView::OnDraw(CDC* pDC)
{
// TODO: add draw code for native data here

for (;LineFlag < NumLine;)
{
pDC->TextOut(0, LineFlag * 20, str);
}
}void CGUETHCUsbView::OnImport() 
{
// TODO: Add your command handler code here CString filename;
CStdioFile file; LPCTSTR lpszFilter = "Text Files(*.txt)|*.txt||";
CFileDialog dlg(TRUE,
lpszFilter, 
NULL, 
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
lpszFilter,
NULL);

if(dlg.DoModal()==IDOK)
{
filename=dlg.GetPathName();

if(file.Open(filename,CFile::modeRead|CFile::shareDenyNone,NULL)==0)
{
AfxMessageBox("无法打开该文件!",MB_OK,0);
return;
};
while(file.ReadString(str) != FALSE) 
{
NumLine++;
Invalidate(true);   
   UpdateWindow();    }
file.Close();
}

解决方案 »

  1.   

    str定义成一个数组,然后循环读取的时候使用str[i],输出的时候使用str[LineFlag ]
      

  2.   

    笔误
    for  (;LineFlag  <  NumLine;)  
               {  
                           pDC->TextOut(0,  LineFlag  *  20,  str);  
                           LineFlag  ++;           }  
      

  3.   

    for (int i ;i< NumLine;i++)
    {
    pDC->TextOut(0, i* 20, str);
    }
      

  4.   

    while(file.ReadString(str) != FALSE) 
    {
    NumLine++;
    Invalidate(true);   
       UpdateWindow();    }
    这里的str一定要放在一个容器中的,你这样的写法,只是显示最后一行的字符
      

  5.   

    给你看看我打开文本文件 然后显示的代码void CMFCView::OnOpenTxt()
    {//点击“打开文本文件”消息响应函数
    CClientDC dc(this);
    CFileDialog fileDlg(TRUE);
    fileDlg.m_ofn.lpstrTitle="我的文件打开对话框";
    fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
    CRect Rect;
    GetClientRect(&Rect);
    if(IDOK==fileDlg.DoModal())
    {
    CFile file(fileDlg.GetFileName(),CFile::modeRead); DWORD dwFileLen;
    dwFileLen=file.GetLength();
    pBuf=new char[dwFileLen+1];
    pBuf[dwFileLen]=0;
    file.Read(pBuf,dwFileLen);
    file.Close();
    InvalidateRect(NULL,TRUE);
    }
    }然后是重绘函数中的代码:CRect Rect;
    GetClientRect(&Rect);
    pDC->SelectObject(m_font);
    pDC->DrawText(pBuf,Rect,DT_WORDBREAK);