본문 바로가기
프로그래밍/delphi

DELPHI CreateParented 로 패널 또는 폼안에 집어넜을 때의 문제점 발견.

by 메르세데쓰 2016. 3. 10.
반응형


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


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


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


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




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


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


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

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


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


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

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


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


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


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



반응형

댓글