Вызов из DLL дочерней MDI-формы (C++Builder)
От: Doid Россия  
Дата: 14.08.03 12:02
Оценка:
Есть главное MDI-приложение, которое вызывает дочерние MDI-формы из разных DLL-ек. Все формы наследуются от одного и того же класса:
{PluginForm.h}
#ifndef PluginFormH
#define PluginFormH
#include <Forms.hpp>

class TPluginForm: public TForm
{
    public:
    __fastcall TPluginForm(TComponent* Owner);
    virtual __fastcall int SendRequest(void) = 0;
};
#endif

{PluginForm.cpp}
#include "PluginForm.h"

__fastcall TPluginForm::TPluginForm(TComponent* Owner): TForm(Owner)
{
}

и пока что одна форма:
{Form_MB_06.h}
...
class TfmMB_06: public TPluginForm
{
...
public:        // User declarations
    __fastcall TfmMB_06(TComponent* Owner);
...
};

extern PACKAGE TfmMB_06 *fmMB_06;
#endif

{Form_MB_06.cpp}
...
TfmMB_06 *fmMB_06;

__fastcall TfmMB_06::TfmMB_06(TComponent* Owner)
    : TPluginForm(Owner)
{
}
...

...и наконец сам модуль DLL:
{MB_06.h}
...
extern "C" void MB_06_DLL ShowMDIChildForm(int mainApp);
...

{MB_06.cpp}
#pragma hdrstop

#include "_06_WSR.h"
#include "Form_MB_06.h"

USEFORM("Form_MB_06.cpp", fmMB_06);

TApplication *DLLApp = NULL;
...
void ShowMDIChildForm(int mainApp)
{
    if (!DLLApp)
    {
        DLLApp = Application;
        Application = (TApplication*)mainApp;
    }
    fmMB_06 = new TfmMB_06(Application->MainForm);
    fmMB_06->Show();
}
...

{MB_06.def}
...
    ShowMDIChildForm               @4   ; ShowMDIChildForm
    ___CPPdebugHook                @7   ; ___CPPdebugHook
    _fmMB_06                       @8   ; _fmMB_06
...

DLL-ка динамически загружается в приложении. Причем вызов функции, возвращающей число, проходит прекрасно.
Однако: При вызове функции
ShowMDIChildForm((int)Application)
выдается исключение EOSError
.
Может кто встречался с подобной проблемой. Подскажите, плиз. Заранее благодарен.
P.S. По данной теме выполнялся поиск, правда безуспешно .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.