메뉴는 exe로 메뉴에 속한 서브 프로그램은 전부
dll을 동적인 선언으로 선언해서 작성했음니다.(db세션을 공유하고 메모리 확보를 위해)
메뉴에서 클릭하면 showmodal로 각 윈도우를 열었는데 아 글쎄
사용자자 불편하다고 모달리스로 해 달랍니다.
거의 막판인데 모두 메뉴에 묵어서 만들기도 부담스럽고 exe로 만들자니
db세션을 계속 생성하기도 부담스러워서 다음과 같은 꽁수를 사용했는데
자꾸 에러가 나서 환장하겠네요. 좀 도와 주세요!
메뉴에서 항목을 클릭하면 선택한 dll의 노출된 펑션을 호출하여
(이때 LoadLibrary에서 얻는 핸들값을 저장하여 종료시에 사용합니다.)
서브 dll폼을 show로 열고 열린 윈도의 핸들값을 리턴하도록 저장했읍니다
이런 식으로 각 서브 메뉴의 프로그램을 실행합니다.
(LoadLibrary에서 얻는 핸들값과 열린 윈도의 핸들값은 같은 itemindex를 같도록
리스트에 저장하여 놓음)
show로 열린 서브 dll에서 사용자가 종료 단추를 클릭하면 서브폼의 formclose이벤트
에서 PostMessage('메뉴윈도핸들, WM_USER, Handle, 0)로 메뉴에 메시지를 날리면
메뉴에서는 메시지를 받아 처음 핸들값과 똑같은 값을 찾아 원래 LoadLibrary의 값을
사용하여 서브폼에 만들어놓은 종료 프로시져를 호출한후 FreeLibrary로 dll을 해제
합니다. 이때 종료프로시져에는 "해당폼.Free;"요 한줄만 들어있죠
요러게 해서 실행하면 몃번은 잘 실행된느데 불규칙한 에러가 나서 사람을
미치게하는 군요.
서브dll종료시 메모리에서 잘 해제 되는걸 확인했느데 반복실행하면 메모리를 잘못
건들일때 나는 에러메시가 뜹니다.
설명이 무척 지저분해서 죄송합니다.
어쨌든 메뉴에서 각 폼을가진 dll을 동적인 선언으로 show로 열어서 잘 사용하고
싶다는 겁니다. 책에 있는 예제에는 거의 showmodal로 열었더군요.
제 방법의 문제점이나 다른 쉽고 안전한 방법이 있으면 도움좀 주세요!
개발 막바지 입니다.!!!