Отображение различных форм в одном окне
От: mgalkin Россия  
Дата: 07.11.05 10:40
Оценка:
Хочу сделать SDI приложение, которое в своём окне способно отображать форму, хранящуюся в виде ресурса в динамически подключаемой библиотеке DLL.
Таких однотипных библиотек должно быть несколько и они будут содержать разные формы. Библиотека доолжна подключаться в процессе работы программы, и после её подключения на окне приложения должна отобразиться форма, хранящаяся в этой библиотеке. Собственно проблема в том, что в процессе работы программы необходимо подключать несколько библиотек — т.е. при подключении новой библиотеки, предыдущая форма дожна исчезать, а на её месте должна возникать новая из вновь открываемой библиотеки.
Re: Отображение различных форм в одном окне
От: Аноним  
Дата: 07.11.05 11:30
Оценка:
Здравствуйте, mgalkin, Вы писали:

M>Хочу сделать SDI приложение, которое в своём окне способно отображать форму, хранящуюся в виде ресурса в динамически подключаемой библиотеке DLL.


Ну так делай

M>Таких однотипных библиотек должно быть несколько и они будут содержать разные формы. Библиотека доолжна подключаться в процессе работы программы, и после её подключения на окне приложения должна отобразиться форма, хранящаяся в этой библиотеке.


Собственно проблема в том, что в процессе работы программы необходимо подключать несколько библиотек — т.е. при подключении новой библиотеки, предыдущая форма дожна исчезать, а на её месте должна возникать новая из вновь открываемой библиотеки.

Да нет здесь никакой проблемы. Создавай ресурсы форм в mfc ext dll, создавай для них классы,
экспортируйих с помощью AFX_EXT_DLL и всё!
Re[2]: Отображение различных форм в одном окне
От: mgalkin Россия  
Дата: 07.11.05 11:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, mgalkin, Вы писали:


M>>Хочу сделать SDI приложение, которое в своём окне способно отображать форму, хранящуюся в виде ресурса в динамически подключаемой библиотеке DLL.


А>Ну так делай


M>>Таких однотипных библиотек должно быть несколько и они будут содержать разные формы. Библиотека доолжна подключаться в процессе работы программы, и после её подключения на окне приложения должна отобразиться форма, хранящаяся в этой библиотеке.


А>Собственно проблема в том, что в процессе работы программы необходимо подключать несколько библиотек — т.е. при подключении новой библиотеки, предыдущая форма дожна исчезать, а на её месте должна возникать новая из вновь открываемой библиотеки.


А>Да нет здесь никакой проблемы. Создавай ресурсы форм в mfc ext dll, создавай для них классы,

А>экспортируйих с помощью AFX_EXT_DLL и всё!

Ну, допустим, с одной библиотекой так получится, а мне нужно в процессе работы загружать несколько библиотек (только не одновременно, а одну загрузиь — предыдущую выгузить) и, что самое важное, в окне приложения должна появится НОВАЯ ФОРМА из вновь загружаемой библиотеки.
Re[3]: Отображение различных форм в одном окне
От: Аноним  
Дата: 07.11.05 11:47
Оценка:
M>Ну, допустим, с одной библиотекой так получится, а мне нужно в процессе работы загружать несколько библиотек (только не одновременно, а одну загрузиь — предыдущую выгузить) и, что самое важное, в окне приложения должна появится НОВАЯ ФОРМА из вновь загружаемой библиотеки.

Так если с одной получится, почему не получится с n-библиотеками?
Объясни конкретно что ты хочешь?
Re[4]: Отображение различных форм в одном окне
От: mgalkin Россия  
Дата: 07.11.05 12:02
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Так если с одной получится, почему не получится с n-библиотеками?

А>Объясни конкретно что ты хочешь?

Чтобы отобразить форму в SDI приложении, нужно ассоциировать с ней класс, наследующий от CFormView (например CMyPrilView), а для того, чтобы она отобразилась в окне нужно добавлять CSingleDocTemplate, использующий класс формы (CMyPrilView), функцией AddDocTemplate.
Таким образом каждый раз при загрузке нвой библиотеки нужно выполнять следующий код:
    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
        IDR_MAINFRAME,
        RUNTIME_CLASS(CMyPrilDoc),
        RUNTIME_CLASS(CMainFrame),
        RUNTIME_CLASS(CMyPrilView));
    if (!pDocTemplate)
        return FALSE;
    AddDocTemplate(pDocTemplate);


Я бы этого очень не хотел. Нельзя ли этот механизм каким-нибудь способом обойти? То есть не создавать каждый раз для новой формы темплейт документа в приложении.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.