[q]MFC траблы с CRichEditCtrl в Dialog-е

marizha

RichEdit не желает отображаться не смотря на присутсвие AfxInitRichEdit; в InitInstance
Dialog создается с помоью глобального указателя, инициализируемого в InitInstance
не помогает также размещение AfxInitRichEdit; в конструкторах приложения и(или) диалога (или даже просто в stdafx.h)...

marizha

если создать новый проект, то все работает, но мне нужно дописать старый...
может кто-нибудь сталкивался с такой проблемой и может подсказать в чем причина...

marizha

up

yolki

не знаю как в MFC, но в Delphi просто создания RichEdit'a на диалоге не достаточно,
надо ещё у RichEdit.Parent прописать (соотв, он должен указывать на родительское окно)
Это если в run-time создавать. во время дизайна всё ок, ничего прописывать не надо

psm-home

Наобум немного, сорри, если не поможет. Может у тебя версия контрола не совпадает с версией библиотеки? Попробуй в InitInstance вместо вызова AfxInitRichEditсделать так:


LoadLibrary("Riched32.dll");
LoadLibrary("Riched20.dll");


Этим ты загрузишь в свой процесс библиотеки, нужные для поддержки обеих возможных версий RichEdit'а.

marizha

ничего не изменилось

yolki

Как ты контрол на диалоге создаёшь?
я вот попробовал так (при нажатии кнопочки создаётся RichEdit):


void CrichedtDlg::OnBnClickedButton1
{
// TODO: Add your control notification handler code here
if(re==NULL)
{
re=new CRichEditCtrl;
re->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
CRect(10, 10, 100, 100 this, 1);
}
else
this->GetDlgItem(IDC_EDIT1)->SetWindowText("Уже создан");
}


Вроде всё работает.
Ты размеры / геометрическое положение контрола где задаёшь?
Для красоты надобы ещё ES_WANTRETURN добавить а то нажатие Enter вызывает закрытие диалога по DefaultButton

marizha

в редакторе ресурсов...

marizha

причиной моей проблемы были некоторые "глюки" MFC : я зачистил остатки созданного Wizard-ом класса About... и прога заработала
Оставить комментарий
Имя или ник:
Комментарий: