Автор
|
Тема: RichEdit
|
Demo_S |
опубликован 15-03-2001 04:12 MSK
Возможно, я просто туплю, но у меня почему-то постоянно возникаетследующая проблема: когда я ложу RichEdit в Dialog based приложение (в редакторе ресурсов) то приложение нифига не запускается, точнее запускается и тут же выходит, пытался трасировать - оказалось, что оно вываливается при инициализации диалога. Может кто-нибудь знает, в чем эе тут дело. Заранее благодарен.
|
OlegN
|
опубликован 15-03-2001 11:39 MSK
Попробуй протрассировать CDialog::OnInitDialog(); функцию. Но исходя из собственного опыта могу посоветовать поставить breakpoint на функции CDialog::DoDataExchange(pDX); или на CMyDialog::DoDataExchange(pDX); где CMyDialog - твой класс диалога. DoDataExchange - виртуальная функция, которая вызывается внутри OnInitDialog() Вероятнее всего застрел может происходить в одной из DDX_ или DDV_ функций которые вызываются внутри DoDataExchange, например : void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) DDX_Control(pDX, IDOK, m_btnOK); //}}AFX_DATA_MAP }Если кнопки с идентификатором IDOK в диалоге нет, то проитзойдет выброс исключения, и если ты его нигде не ловишь, то сам понимаешь.... У меня опыт программирования на MFC 3 года, и я тебе советую, пока "по косточкам" не разберешь, какое нутро почти у каждой MFC функии, которые ты вызываешь, у тебя будут появляться подобные сюрпризы. Я надеюсь исходники MFC у тебя есть.
|
purpe
|
опубликован 15-03-2001 12:00 MSK
2OlegNСлушай, а вот у меня вопрос к тебе немного не в кассу :) Как то раз я делал программулину и мне нужно было, чтобы она как можно меньше места занимала. Естевственно я начал ваять её через API. Но уж больно не хотелось париться со всяческими строковыми переменными, и тогда я выцепил CString и создал на его основе свой класс, предварительно выкинув из CString лишние и часто ненужные методы и операторы. А вот потом мне захотелось проделать такую же штуку с CAsyncSocket, но увы, этот класс уходит корнями к CObject. Так вот можно ли каким-нибудь создать самостоятельный независимый класс полностью идентичный CAsyncSocket ? Извини, если совсем не в кассу :)
|
OlegO
|
опубликован 15-03-2001 12:07 MSK
из MSDN>>> If you are using a rich edit control in a dialog box , you must call !!! AfxInitRichEdit !!! once before the dialog box is displayed. Вольный Перевод: Если ты используешь rich edit контрол в окне диалога, ты должен вызывать AfxInitRichEdit() перед отображением окна диалога. Я обычно это делаю в CWinApp::InitInstance()
|
Demo_S
|
опубликован 17-03-2001 18:00 MSK
2OlegO Спасибо, как вставил эту самую AfxInitRichEdit - заработало!! ;)) |