我已经在VMWare映像上安装了Windows XP Professional SP3,并在其上安装了Visual Studio 2005。我创建了一个新的基于对话框的C ++ MFC项目,带有/ clr支持。我已将RichEdit 2.0控件放置到自动生成的对话框中,并且试图读取文本文件,并通过单击按钮将其内容放入此RichEdit 2.0控件中而不进行格式化。我在RichEdit 2.0中添加了一个名为pCRichEditCtrl的变量,这是我的代码不起作用。

CWinApp继承:

BOOL CTextFormatterApp::InitInstance()
{
    ...
    AfxInitRichEdit2();
    CWinApp::InitInstance();
    ...
}


CDialog继承:

void CTextFormatterDlg::OnBnClickedButton1()
{
    StreamReader^ objReader = gcnew StreamReader("c:\\text.txt");
    String ^sLine = "";
    sLine = objReader->ReadLine();
    while (sLine != nullptr)
    {
            pCRichEditCtrl.SetSel(pCRichEditCtrl.GetTextLength(), -1);
            pCRichEditCtrl.ReplaceSel(CString(sLine));
            sLine = objReader->ReadLine();
    }

    objReader->Close();
}


我不知道它是否很重要,但在链接时收到以下警告:


  TextFormatterDlg.obj:警告LNK4248:“ AFX_CMDHANDLERINFO”的未解析的typeref令牌(01000016);图像可能无法运行
  
  TextFormatter.obj:警告LNK4248:“ AFX_CMDHANDLERINFO”的未解析的typeref令牌(01000012);图片可能无法运行
  
  TextFormatterDlg.obj:警告LNK4248:“ IAccessibleProxy”的未解析的typeref令牌(01000015);图片可能无法运行


我不确定自己在做什么,因为我只熟悉较新的框架,也不知道Windows。

输入文件存在,如果我调试应用程序,则可以看到读取的文本,但是在编辑框中看不到任何更改。我试图调用pCRichEditCtrl.UpdateData(true);但没有任何改变。

添加变量以获取盒子的控制器是否足够(pCRichEditCtrl)?似乎指针没有指向适当的控制项。

你有什么想法吗?

最佳答案

无需使用CLI即可读取文本文件,请尝试以下操作:

void CTextFormatterDlg::OnBnClickedButton1()
{   CStdioFile f1;
    CString sLine;
    if (!f1.Open(_T("c:\\text.txt"), CFile::modeRead | CFile::typeText))
        return;
    while (f1.ReadString(sLine))
    {   pCRichEditCtrl.SetSel(pCRichEditCtrl.GetTextLength(), -1);
        pCRichEditCtrl.ReplaceSel(sLine);
    }

    f1.Close();
}



编辑:控制变量pCRichEditCtrl

a)应在对话框类中声明为CRichEditCtrl pCRichEditCtrl;

b)应该连接到控件的ID(例如:IDC_RICHEDIT21),例如

void CTextFormatterDlg::DoDataExchange(CDataExchange* pDX)
{   CDialogEx::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_RICHEDIT21, pCRichEditCtrl);
}


c)我已经测试了以下代码,并且对我有用(每次单击按钮时,都会在控制窗口中添加“ aa”)

pCRichEditCtrl.SetSel(pCRichEditCtrl.GetTextLength(), -1);
pCRichEditCtrl.ReplaceSel(TEXT("aa"));

关于c++ - VS 2005 C++编辑CRichEditCtrl实例的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24094329/

10-11 22:38
查看更多