안녕하세요 메르세데스입니다.  


예전에 DLL로 제작한 폼을 EXE프로그램안에 ModalLess로 올리는 방법에 대해 알아봤는데요 몇가지 문제점이 있어  적어봅니다.


일단..    제가 알아본 바로는  메인프로그램내 패널과 같은곳에  적용할 때  방법은 2가지 정도가 있습니다.


1.Create(nil) 후..  Windows.SetParent( ..  )




2.CreateParented(ParentHandle)로 적용하는 방법..


뭐.. 상황에 따라 다르겠지만 보편적으로 첫번째 방법을 많이 사용하는데   각각 장점과 단점이 있습니다.


위의 1번의 경우.. 지난포스팅에도 언급하였지만.. 호출 후 프로그램의 포커스가 넘어가는 문제가 발생한다는 것 입니다.

일단 넘어가버린 포커스를 호출된 프로그램에서 되돌리기는 쉽지 않습니다. 실행프로그램내에서 다음줄에 setfocus;  이렇게 처리해주면 되죠.. 그리고 다른 문제는 없습니다.


2번의 경우 호출시 포커스가 안넘어간 상태에서 띄울 수 있는 장점이 있지만...   이 dll이 올라가 있는 Parent폼을 종료해 버리면 code:1400 에러가 뜹니다.


이것 때문에 이것저것 나름대로 알아봤지만 방법이 잘 안나옵니다.   뭐 그렇다 하더라도 아예 사용을 못할 지경은 아니고요.. 

폼 종료 전.. 해당 handle을 받아와 sendmessage와 같은 메시지로 종료처리를 해주면 현재 밝혀낸 바로는 그럭저럭 사용은 할 수 있습니다.


너무 아쉬워서 좀 더 파헤쳐보면 방법이 있을 것 같기도한데..  ㅜㅜ


네 아무튼 그렇습니다. 혹시 저랑 비슷한 고민을 하시는 분이 계신다면.. 조금이나마 도움이 되었으면 좋겠습니다. 


혹시  2번째 방법으로 해결하신 능력자 님 계시면 조언좀 부탁드립니다. 감사합니다.



블로그 이미지

delphi개발자 메르세데쓰

C#,delphi,db,network,server,it 개발자 메르세데스입니다

Tag

댓글을 달아 주세요