Я установил Windows XP Professional SP3 на образ VMWare и Visual Studio 2005 на нем. Я создал новый проект на основе C++ MFC с поддержкой/clr. Я поставил элемент управления RichEdit 2.0 в автоматически сгенерированный диалог, и я пытаюсь прочитать текстовый файл и поместить его содержимое в этот элемент управления RichEdit 2.0 нажатием кнопки без форматирования. Я добавил переменную в RichEdit 2.0, называемую pCRichEditCtrl, и вот мой код, который не работает.VS 2005 C++ редактирует содержимое экземпляра CRichEditCtrl
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: неразрешенный токен typeref (01000016) для 'AFX_CMDHANDLERINFO'; изображение не может быть запущено
TextFormatter.obj: предупреждение LNK4248: неразрешенный токен typeref (01000012) для 'AFX_CMDHANDLERINFO'; изображение может не работать
TextFormatterDlg.obj: предупреждение LNK4248: нерешенный токен typeref (01000015) для 'IAccessibleProxy'; изображение может не работать
Я не уверен, что я делаю, потому что я знаком только с новыми фреймворками, и я не знаю ни одной Windows.
Входной файл существует, я могу видеть прочитанный текст, если я отлаживаю приложение, но я не вижу никаких изменений в окне редактирования. Я попытался позвонить pCRichEditCtrl.UpdateData (true);, но ничего не изменилось.
Достаточно ли добавить переменную для получения контроллера поля (pCRichEditCtrl)? Кажется, что указатель не указывает на правильный элемент управления.
У вас есть идеи, что не хватает?
10 Я дал ответ, чтобы загрузить ваш контроль, используя прямой MFC - как/где вы объявляете 'pCRichEditCtrl'? и как вы подключаете его к вашему контролю? –
Я добавил его через графический интерфейс: щелкните правой кнопкой мыши элемент управления RichEdit -> Добавить переменную ... Дополнительная информация: если я добавлю следующую строку, то RichEdit отобразит текст, но только со второй строки: ** UpdateData (TRUE) ;** Это странно. – bdevay
отредактировал мой ответ с настройками для 'pCRichEditCtrl', простой тестовый проект, как показано ниже, работает для меня без' UpdateData() ', это необходимо, только если у вас есть переменные типа« значение » –