gpt4 book ai didi

c++ - VS 2005 C++编辑CRichEditCtrl实例的内容

转载 作者:行者123 更新时间:2023-11-28 06:50:12 25 4
gpt4 key购买 nike

我在 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 : warning LNK4248: unresolved typeref token (01000016) for 'AFX_CMDHANDLERINFO'; image may not run

TextFormatter.obj : warning LNK4248: unresolved typeref token (01000012) for 'AFX_CMDHANDLERINFO'; image may not run

TextFormatterDlg.obj : warning LNK4248: unresolved typeref token (01000015) for 'IAccessibleProxy'; image may not run

我不确定我在做什么,因为我只熟悉较新的框架,我对 Windows 都不了解。

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

是否足以添加一个变量来获取盒子的 Controller (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();
}



EDIT:控制变量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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com