|
ㅜ.ㅜ
며칠 전에 올렸는데 답변이 없어 다시 올려봅니다. 혹시 아래 코드를 보시고 더 많은 설명이
필요하시다면 답글 붙여 주세요.
메인창에서 dll의 함수를 호출하고 데이터를 다시 dll로 넘겨서 dll의 Edit창에 표시를 하려고 하거든요. 그런데 코드를 보시면 아시겠지만 timer에 의해 일정시간마다 dll을 호출합니다. 그런데 한번 호출하고 Close()가 있는데도 dll폼을 닫지 않고 계속해서 생성이 되네요. 제가 알고 싶은건
1. 왜 Close()가 먹히질 않는가??
2. 어떻게 하면 dll폼을 한번만 띄워놓고 거기에 계속 데이터를 넘겨받아 표시할수 있는가??
입니다.
현재 코드입니다.
//main------------------------------------------------------
void __fastcall TSampleForm::Timer1Timer(TObject *Sender)
{
Edit1->Text = Data;
typedef void (__stdcall *IMPPROC) (int);
HINSTANCE DllInstance;
IMPPROC ImpFunc;
DllInstance = LoadLibrary("About.dll");
ImpFunc = (IMPPROC) GetProcAddress(DllInstance, "_InvokeAboutDialog");
ImpFunc(Data);
FreeLibrary(DllInstance);
Data++;
if (Data >=100)
Data = 0;
}
//Aboutdll-----------------------------------------------------------------------------
void InvokeAboutDialog(int mainData)
{
AnsiString a;
a.sprintf("%d",mainData);
TAboutForm *AboutDlg = new TAboutForm(NULL);
AboutDlg->AboutEdit->Text = a;
AboutDlg->ShowModal();
AboutDlg->Close(); <----바로 이부분이 안먹히는거 같아요ㅠ.ㅠ
delete AboutDlg;
}
|