Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сообщение "Не удалось создать новый документ" 
:(
    Опции темы
spikerok
Дата 21.7.2010, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.7.2010

Репутация: нет
Всего: нет



Есть проект на Visual C++ 5.0. На моем компе все работает нормально, а у заказчика при выполнении метода CWinApp::OpenDocumentFile(...) вылетает сообщение "Не удалось создать новый документ".  
Посмотрел по отладчику, сообщение может вызываться в этом куске кода:

CDocument* CMultiDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName,
    BOOL bMakeVisible)
{
    CDocument* pDocument = CreateNewDocument();
    if (pDocument == NULL)
    {
        TRACE0("CDocTemplate::CreateNewDocument returned NULL.\n");
        AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
        return NULL;
    }
    ASSERT_VALID(pDocument);

    BOOL bAutoDelete = pDocument->m_bAutoDelete;
    pDocument->m_bAutoDelete = FALSE;   // don't destroy if something goes wrong
    CFrameWnd* pFrame = CreateNewFrame(pDocument, NULL);
    pDocument->m_bAutoDelete = bAutoDelete;
    if (pFrame == NULL)
    {
        AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
        delete pDocument;       // explicit delete on error
        return NULL;
    }
    ASSERT_VALID(pFrame);
       ....
}
Сообщение показывается в строке AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
Если кто сталкивался с подобным, подскажите, как быть, плз.
PM MAIL   Вверх
Earnest
Дата 21.7.2010, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Дальше надо смотреть CreateNewDocument и CreateNewFrame - кто-то из них не создает то, что надо. Разбирайся дальше.
Кстати,  Visual C++ 5.0 - это такая древность, что аж жуть берет. Зачем ты пользуешься этим антиквариатом?
Проблема может быть, например, из-за несоответствия библиотек, т.к. у заказчика наверняка в системе более свежие установлены. Но заменять при установке более свежие библиотеки на свои древние - совсем нехорошо.


--------------------
...
PM   Вверх
spikerok
Дата 22.7.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.7.2010

Репутация: нет
Всего: нет



Цитата

Дальше надо смотреть CreateNewDocument и CreateNewFrame - кто-то из них не создает то, что надо.

Понятно, что одна из двух функций возвращает NULL, но проблема в том, что посмотреть в отладчике, где именно возникает ошибка, я не могу, т.к. на моем компе никаких ошибок не возникает.
Цитата

Visual C++ 5.0 - это такая древность, что аж жуть берет

У заказчика тоже стоит версия 5.0, а вот насчет того, что библиотеки одинаковые, не уверен.  Сам бы я конечно не стал страдать хренью и работать в этой среде, но приходится на работе поддерживать старый проект. 
PM MAIL   Вверх
Earnest
Дата 22.7.2010, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Хорошо, тогда думаем. Из MFC-кода следует, что CreateNewDocument может не создать документ по 3 причинам: 
1) не установлен m_pDocClass 
2) этот док-класс не DYNCREATE (т.е. нулевой m_pfnCreateObject)
3) DYNCREATE, но создает не документ, а фиг знает что.
3-е вряд ли, т.к. в коде нет DYNAMIC_CAST, и несоответствие типа вылезло бы позже. В первые 2 пункта можно проверить где-нибудь до вызова в твоем коде - вывести отладочную информацию с помощью OutputDebugString (она и в релизе работает, а посмотреть можно утилиткой DebugView от Руссиновича).

Аналогично, смотрим CreateNewFrame - на предмет отказа - тоже класс проверям, затем смотрим, почему бы LoadFrame может отказать и т.д.
Соответственно, если эти функции в твоем коде переопределены, посмотреть нужно и твою реализацию.

Надеюсь, ход мыслей ясен.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0670 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.