Re[6]: Основной MDIFrame в отдельном потоке
От: TatarDozor  
Дата: 09.09.08 09:32
Оценка:
Здравствуйте, 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) прекрасно срабатывает!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.