|
TipN Triks 65번 을 고대로 하구요
MDIParent에서는 요함수를 사용할수 가 없어서
(만약 사용하려면 차일드윈도 종료 메뉴를 추가해야 할것 같아서 ... 쩝)
extern "C" __declspec(dllexport) void __stdcall ResetDllApp()
{
if (DllApp)
{
Application = DllApp;
}
}
DLL Detach될때 다음과 같은 코드를 넣었구요
DllEntryPoint(..., reason, ...)
{
if(reason== DLL_PROCESS_DETACH )
{
Application = DllApp;
}
}
그러고 실행했는데 MDIParent가 죽을때 바이올레이션이 발생해서(2개이상의 차일드가 있을경우) 이것저것 해보다가
extern "C" __declspec(dllexport) void __stdcall CreateChild(TApplication *App)
{
if (!DllApp)
{
DllApp = Application;
Application = App;
}
TForm2 *child = new TForm2(Application->MainForm); <---- 부분에서
child->Show();
}
<-- 부분에서 Application->MainForm 대신 Application을 주니까 바이올레이션이 안납니다. 왜 그런거죠 ?
그리고 어떻게 하든 MDIChildCount 가 무조건 0으로 나옵니다. 왜 그런거죠 ?
|