本帖最后由 peigong_dh 于 2012-10-15 14:34:31 编辑

解决方案 »

  1.   

    1.在OnOpenDoucument()函数中读取文件的内容,并赋值给fileStr
    2.CEditView的UpdateView中:
    SetWindowText(fileStr);
    别的不要。
    3.Doc 得到fileStr后 UpdateAllView();
      

  2.   

    [Quote=引用 1 楼  的回复:]1.在OnOpenDoucument()函数中读取文件的内容,并赋值给fileStr
    2.CEditView的UpdateView中:
    SetWindowText(fileStr);
    别的不要。
    3.Doc 得到fileStr后 UpdateAllView();
    [8/Quote]
    感谢你的回复,我按照你的提示做了如下操作:
    在Doc类中添加函数BOOL CTestShowViewDoc::OnOpenDocument(LPCTSTR lpszPathName)
    {
    if (!CDocument::OnOpenDocument(lpszPathName))
    return FALSE; CFile file(lpszPathName, CFile::modeRead);
    file.Read(fileStr.GetBuffer(file.GetLength()), (UINT)file.GetLength());
    UpdateAllViews(NULL);
    file.Close(); return TRUE;
    }
    在View中添加:void CTestShowViewView::OnUpdate(CView* /*pSender*/, LPARAM /*lHint*/, CObject* /*pHint*/)
    {
    SetWindowText(GetDocument()->fileStr);
    }不知道是我理解有误还是操作有问题,但是仍然无法显示文本文件。
    我留意到你的第二条步骤中提到了CEditView,我的原意是不使用CEditView继承来实现此功能,因为需求是对生成的报表只能查看,不能修改。但是使用CEditView会导致能够编辑文本,这是不允许的。
    仍然感谢你的回复,期待更精彩的答案!
      

  3.   

    根据CEditView::GetEditCtrl来获取内置的cedit控件,然后对其进行readonly可以不??
      

  4.   

    楼上的方法好像不行,我在CEditView中的PreCreateWindow()中设置
    CEditView::GetEditCtrl().SetReadOnly();
    但是会出现运行时错误,忽略错误后,打开文本仍然可以编辑。
      

  5.   

    不使用CEditView 要自己 OnDraw 麻烦CEditView::GetEditCtrl().SetReadOnly();
    放InitialUpdate 中试试。
    ReadyOnly后背景颜色是灰的。
      

  6.   

    TextOut和DrawText都要自己选择输出的DC的。楼主是不是固定DC选择错误呢?
      

  7.   

    感谢5楼的帮助,在CEditView中添加如下代码
    void CXXXView::OnInitialUpdate() 
    {
    CEditView::OnInitialUpdate();
    CEditView::GetEditCtrl().SetReadOnly();
    }
    即完成显示文本但不能编辑的功能。
    谢谢大家,立即结贴!