| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Вызов CDocument::OnOpenDocument(pathname) |
| Автор: Madest 18.3.2004, 10:44 |
| Как это можно сделать? ругается - illegal call of non-static member function |
| Автор: srd 18.3.2004, 13:22 |
| А ты случайно не вызываешь её CDocument::OnOpenDocument(pathname)? Вызывать её надо для конкретного объекта класса pDoc->OnOpenDocument(pathname), т.к. это не статическиая функция-член |
| Автор: Madest 18.3.2004, 15:54 |
| Мне документ нужно открыть с заранее известным программе pathname из диалога. Но если б я кнопке присвоил ID_FILE_OPEN - вызывался бы CFileDialog, который там не нужен. В общем, кнопке дал идентификатор ID_FILE_NEW, а в функции документа OnNewDocument() вместо CDocument::OnNewDocument() вписал CDocument::OnOpenDocument(pathname). Типа обхитрил =) А можно ли это правильными средствами сделать? А поначалу, конечно, че только не выдумывал, даже вот это CMultiDocTemplate* pDocTemplate; pDocTemplate=new CMultiDocTemplate( IDR_ETYPE, RUNTIME_CLASS(CEDoc), RUNTIME_CLASS(CChildFrame), RUNTIME_CLASS(CEView)); AddDocTemplate(pDocTemplate); в функцию-обработчицу сообщения от кнопки пытался впихнуть =) |
| Автор: srd 18.3.2004, 16:30 |
| Гм, покажи код, я то я запутался |
| Автор: Madest 18.3.2004, 17:42 |
| Кнопка из диалога должна открыть документ по пути mypathname. Поначалу писал ей собственно-выдуманный идентификатор и в функции-обработчице сообщения ее нажатия пытался вызвать CDocument::OnOpenDocument(mypathname). Извращался повсякому - не вышло. Потом написал у этой кнопки идентификатор ID_FILE_OPEN - стандартный MFC-шный. Кнопка стала вызывать CFileDialog (для открытия файла) и вызывает метод CEDoc::OnOpenDocument(LPCTSTR lpszPathName) в котором вызывается нужный мне CDocument::OnOpenDocument(mypathname). Но CFileDialog мне там не нужен(!!!), mypathname программе известен. Поэтому кнопке приписал ID_FILE_NEW, при котором просто создается новый документ и вызывается метод CEDoc::OnNewDocument(). И там уже закомментировал CDocument-овский OnNewDocument() и вместо него вставил !CDocument::OnOpenDocument(mypathname). Работает нормально, но возможно ведь, наверное, это сделать ээээ... по теории? BOOL CEDoc::OnNewDocument() { if(!CDocument::OnOpenDocument(mypathname)) AfxMessageBox("no open doc"); //if(!CDocument::OnNewDocument()) return FALSE; //...... } |