【发布时间】:2014-06-07 06:11:45
【问题描述】:
我在 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”的未解析类型引用令牌 (01000015);图像可能无法运行
我不确定自己在做什么,因为我只熟悉较新的框架,而且我也不了解 Windows。
输入文件存在,如果我调试应用程序,我可以看到读取的文本,但我在编辑框中看不到任何更改。我尝试调用 pCRichEditCtrl.UpdateData(true); 但没有任何改变。
添加一个变量来获取盒子的控制器(pCRichEditCtrl)是否足够?似乎指针没有指向正确的控件项。
你知道缺少什么吗?
【问题讨论】:
-
我已经给出了使用直接 MFC 加载您的控件的答案——您如何/在哪里声明
pCRichEditCtrl?以及如何将其连接到您的控件? -
我通过 GUI 添加它:右键单击 RichEdit 控件 -> 添加变量... 附加信息:如果我添加以下行,则 RichEdit 显示文本,但仅从第 2 行开始:UpdateData(TRUE); 很奇怪。
-
使用
pCRichEditCtrl的设置编辑了我的答案,下面的简单测试项目适用于我没有UpdateData(),只有当您有“值”类型的变量时才需要这样做
标签: c++ mfc visual-studio-2005 richedit