Хочу сделать SDI приложение, которое в своём окне способно отображать форму, хранящуюся в виде ресурса в динамически подключаемой библиотеке DLL.
Таких однотипных библиотек должно быть несколько и они будут содержать разные формы. Библиотека доолжна подключаться в процессе работы программы, и после её подключения на окне приложения должна отобразиться форма, хранящаяся в этой библиотеке. Собственно проблема в том, что в процессе работы программы необходимо подключать несколько библиотек — т.е. при подключении новой библиотеки, предыдущая форма дожна исчезать, а на её месте должна возникать новая из вновь открываемой библиотеки.
Здравствуйте, mgalkin, Вы писали:
M>Хочу сделать SDI приложение, которое в своём окне способно отображать форму, хранящуюся в виде ресурса в динамически подключаемой библиотеке DLL.
Ну так делай
M>Таких однотипных библиотек должно быть несколько и они будут содержать разные формы. Библиотека доолжна подключаться в процессе работы программы, и после её подключения на окне приложения должна отобразиться форма, хранящаяся в этой библиотеке.
Собственно проблема в том, что в процессе работы программы необходимо подключать несколько библиотек — т.е. при подключении новой библиотеки, предыдущая форма дожна исчезать, а на её месте должна возникать новая из вновь открываемой библиотеки.
Да нет здесь никакой проблемы. Создавай ресурсы форм в mfc ext dll, создавай для них классы,
экспортируйих с помощью AFX_EXT_DLL и всё!
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, mgalkin, Вы писали:
M>>Хочу сделать SDI приложение, которое в своём окне способно отображать форму, хранящуюся в виде ресурса в динамически подключаемой библиотеке DLL.
А>Ну так делай
M>>Таких однотипных библиотек должно быть несколько и они будут содержать разные формы. Библиотека доолжна подключаться в процессе работы программы, и после её подключения на окне приложения должна отобразиться форма, хранящаяся в этой библиотеке.
А>Собственно проблема в том, что в процессе работы программы необходимо подключать несколько библиотек — т.е. при подключении новой библиотеки, предыдущая форма дожна исчезать, а на её месте должна возникать новая из вновь открываемой библиотеки.
А>Да нет здесь никакой проблемы. Создавай ресурсы форм в mfc ext dll, создавай для них классы,
А>экспортируйих с помощью AFX_EXT_DLL и всё!
Ну, допустим, с одной библиотекой так получится, а мне нужно в процессе работы загружать несколько библиотек (только не одновременно, а одну загрузиь — предыдущую выгузить) и, что самое важное, в окне приложения должна появится НОВАЯ ФОРМА из вновь загружаемой библиотеки.
M>Ну, допустим, с одной библиотекой так получится, а мне нужно в процессе работы загружать несколько библиотек (только не одновременно, а одну загрузиь — предыдущую выгузить) и, что самое важное, в окне приложения должна появится НОВАЯ ФОРМА из вновь загружаемой библиотеки.
Так если с одной получится, почему не получится с n-библиотеками?

Объясни конкретно что ты хочешь?
Здравствуйте, Аноним, Вы писали:
А>Так если с одной получится, почему не получится с 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);
Я бы этого очень не хотел. Нельзя ли этот механизм каким-нибудь способом обойти? То есть не создавать каждый раз для новой формы темплейт документа в приложении.