|
이영수 님이 쓰신 글 :
: 로직상의 문제 인듯 싶습니다.. 다시 말해..위의 내용으론 알수 없다는 거죠..그 상황을 테스트
: 용으로 짦막하게 만들어서..올리시는게 답을 빨리 구할수 있는 방법이라고 생각합니다.
: 글구..메시지창을 닫으면 에러가 나고 프로그램이 종료한다고 했는데..메시자창을 닫을때
: 메인프로그램을 종료하는 루틴과 연결 된듯 싶습니다. 글구 에러는 Load한 프리안하고 종료하면
: 발생하는 에러 인듯 싶네요..그러니깐 정리하면 메시지 창과 프로그램 종료 모듈과의 어떤연관성이 있는듯 더 정확한 답을 원하시면..소스를 올리심이 좋으듯 싶네요..
답변 감사합니다.
덧붙여서 소스내용을 올립니다.
메인.cpp
{
:
:
typedef void (__stdcall *IMPPROC)(String);
IMPPROC CallMs;
HINSTANCE dllInstance = LoadLibrary("sub.dll");
if(dllInstance){
CallMs=(IMPPROC) GetProcAddress(dllInstance,"_CallM");
if(CallMs)
CallMs(" ");
}
:
:
FreeLibrary(dllInstance);
:
}
sub.cpp // dll로 작성됨
{
:
rr830f1 = new Trr830f1(NULL); // QuickRep을 가지고 있는 폼입니다.
rr830f1->SubBank(cbSigu->Text,FormatDateTime("yyyymmdd",
dtpRcp1->Date),FormatDateTime ("yyyymmdd",dtpRcp2->Date));
rr830f1->QuickRep1->Preview();
delete rr830f1;
:
:
}
참고 : Action = caFree; // 사용됬음
rr830f1.cpp
{
함수 내용 "SubBank"
{
:
:
typedef void (__stdcall *IMPPROC)(String,char,long);
IMPPROC CallMs;
HINSTANCE dllInstance = LoadLibrary("msg.dll");
if(dllInstance){
CallMs=(IMPPROC) GetProcAddress(dllInstance,"_CallM");
if(CallMs)
CallMs("처리중입니다",'s',0);
}
:
:
CallMs(" ",'p',20);
:
CallMs(" ",'h',0);
FreeLibrary(dllInstance);
:
}
}
sub.h
{
:
extern "C" __declspec(dllexport) void CallM(String Recvs);
:
}
msg.cpp // dll로 작성됨
{
void CallM(String msgs,char sh,long perc){
if (sh == 's'){
char currini[50]=" ";
restf = new Trestf(NULL);
GetCurrentDirectory(sizeof(currini),currini);
strcat(currini,"\\running.avi");
restf->Animate1->FileName = currini;
restf->Caption = msgs;
restf->CGauge1->Progress = 0;
restf->Label1->Caption = FormatDateTime("hh:mm",Now());
restf->Animate1->Active = true;
restf->Show();
restf->Update();
}
else{
if (sh == 'p'){
if(restf->CGauge1->Progress + perc > 100)
restf->CGauge1->Progress = 99;
else
restf->CGauge1->Progress += perc;
restf->Update();
}
else{
restf->Animate1->Active = false;
restf->CGauge1->Progress = 0;
delete restf;
}
}
}
}
msg.h
{
:
extern "C" __declspec(dllexport) void CallM(String msgs,char sh,long perc);
:
}
그럼 답변 기다리겠습니다.
CGauge에 오류로 생각됩니다.
메세지 창에서 이걸 지우닌까 오류가 발생하지 않았거든요
그럼 안녕히, 그리고 답변 감사합니다.
|