Q&A

  • dll폼 처리문제(몇일째 고생중입니다.)
메뉴는 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로 열었더군요.

제 방법의 문제점이나 다른 쉽고 안전한 방법이 있으면 도움좀 주세요!

개발 막바지 입니다.!!!





0  COMMENTS