Q&A

  • DLL 에서 메시지 박스가 떠 있을때 강제로 종료하기
안녕하세요..  

제가 짜는 프로그램은 메인 프로그램이 있고 메인에 따린 자식 프로그램이 있습니다...

자식 프로그램은 DLL로 메인에 속해 있으면 서로 sendmessage로 통신하면서 서로 연결이 되어있죠..

제가 하는 건 자식 프로그램중에 메일입니다..

제가 궁금하게 생각하는건 메인 프로그램에서 네트워이 끊어지면 자동으로 자식 프로그램을 죽이도록 프로그램이 되어 있습니다..

send message로 '죽어라'라고 날리면 왠만한(자식이 모달로 어떤 폼이 떠 있다 해도 바로 자식의 폼들을 죽입니다..

제가 문제로 생각하는 messageBox입니다.
EXE에서 Close로 이벤트가 오면 바로 같이 종료합니다..

어떤한 상황에서도요.. 그런데 Dll 에서는 자식 폼을 죽이고 시스템 에러가 뜨면서 메인까지 죽이더만요. 메인은 죽으면 안되는데..

특히 자식폼에서 또다른 서브폼들에서 많이 그런 현상이 나옵니다.
어떻게 해결해야 되나요.



1  COMMENTS
  • Profile
    이중철 2003.11.10 21:03
    사실 정확히는 모릅니다.

    그러나 추측컨데 폼 Create할때 Owner문제 땜시 그러는 것 같아요

    DLL에서 Application과 Exe의 Application이 같나요

    제가 알기로는 틀리는것으로 알고 있는데.. (정확히는 모름 ^^)

    일단 DLL의 자식폼을 Close를 하더라도 자식폼에서 오픈한 Subform의

    Owner가 매칭이 안되면 에러가 날꺼에요

    A (A가 B를 Create하고) - > B  

    B (A가 C를 Create하고)  -> C (Owner 가  B)

    B (A가 C를 Create하고) -> D (Owner 가 A 또는 Application)

    이때 B를 Close(Action = cafree)하면  C는 Close 되고 Release되는데

    D는 Close도 안되고 Release도 안되죠

    Owner가 그 보다 상위이기 때문에..