Здравствуйте, AstroMan, Вы писали:
AM>Создание документа, как я понимаю, происходит в обработчике ID_FILE_NEW. По умолчанию обработчик этой команды
AM>определен в классе приложения. Если надо по особому обрабатывать в дополнительном фрейме, то сделайте соответствующий
AM>ON_COMMAND в CWinThread или в его CMDIFrameWnd. При этом явно обращайтесь к нужному шаблону:
AM>AM>CDocument* pDoc = m_pMyDocTemplate->CreateNewDocument();
AM>
Я так и делаю, обращаюсь явно к нужному шаблону, но дело в том что программа ругается до того как я создам новый вид и фрейм для документа.
Прога выдает сообщение об ошибке при создании отдельного MDI фрейма, если в основном фрейме открыт хотя бы один документ.
Подробнее:
CMainFrame - класс основного MDI фрейма проги.
CZnzApp - класс приложения
CPreviewFrame - класс дополнительного MDI фрейма для запуска в отдельном потоке.
CPreviewApp - класс-наследник от CWinThread
//Есть обработчик
CMainFrame::MyCreateNewFrame() //в котором я запускаю поток
{
CWinThread *p = AfxBeginThread(RUNTIME_CLASS(CPreviewApp),THREAD_PRIORITY_NORMAL);
}
//AfxBeginThread() в свою очередь запускает CPreviewApp::InitInstance
//в этой функции я создаю дополнительный фрейм
BOOL CPreviewApp::InitInstance()
{
CPreviewFrame *pPF = new CPreviewFrame();
m_pMainWnd = pPF;
//загрузка фрейма из ресурсов
BOOL b = pPF->LoadFrame(IDR_PREVIEWFRAME);
}
//Так вот, если в CMainFrame открыт хотя бы один документ, то pPF->LoadFrame(IDR_PREVIEWFRAME) выдает ошибку!!
В чем может быть дело?
А если в CMainFrame не открыт не один документ, то pPF->LoadFrame(IDR_PREVIEWFRAME) прекрасно срабатывает!!