안녕하세요 메르세데스입니다.
예전에 DLL로 제작한 폼을 EXE프로그램안에 ModalLess로 올리는 방법에 대해 알아봤는데요 몇가지 문제점이 있어 적어봅니다.
일단.. 제가 알아본 바로는 메인프로그램내 패널과 같은곳에 적용할 때 방법은 2가지 정도가 있습니다.
1.Create(nil) 후.. Windows.SetParent( .. )
2.CreateParented(ParentHandle)로 적용하는 방법..
뭐.. 상황에 따라 다르겠지만 보편적으로 첫번째 방법을 많이 사용하는데 각각 장점과 단점이 있습니다.
위의 1번의 경우.. 지난포스팅에도 언급하였지만.. 호출 후 프로그램의 포커스가 넘어가는 문제가 발생한다는 것 입니다.
일단 넘어가버린 포커스를 호출된 프로그램에서 되돌리기는 쉽지 않습니다. 실행프로그램내에서 다음줄에 setfocus; 이렇게 처리해주면 되죠.. 그리고 다른 문제는 없습니다.
2번의 경우 호출시 포커스가 안넘어간 상태에서 띄울 수 있는 장점이 있지만... 이 dll이 올라가 있는 Parent폼을 종료해 버리면 code:1400 에러가 뜹니다.
이것 때문에 이것저것 나름대로 알아봤지만 방법이 잘 안나옵니다. 뭐 그렇다 하더라도 아예 사용을 못할 지경은 아니고요..
폼 종료 전.. 해당 handle을 받아와 sendmessage와 같은 메시지로 종료처리를 해주면 현재 밝혀낸 바로는 그럭저럭 사용은 할 수 있습니다.
너무 아쉬워서 좀 더 파헤쳐보면 방법이 있을 것 같기도한데.. ㅜㅜ
네 아무튼 그렇습니다. 혹시 저랑 비슷한 고민을 하시는 분이 계신다면.. 조금이나마 도움이 되었으면 좋겠습니다.
혹시 2번째 방법으로 해결하신 능력자 님 계시면 조언좀 부탁드립니다. 감사합니다.
'프로그래밍 > delphi' 카테고리의 다른 글
Variant array count 알아내기! delphi (2) | 2017.09.17 |
---|---|
DELPHI 패널위에 폼 또는 DLL폼 올리기 최종.. (0) | 2017.03.22 |
스포트라이트 control + space 단축키변경하기 개발툴 충돌로.. (0) | 2016.03.09 |
DELPHI DLL을 Panel안에 집어넣기 2 (0) | 2016.01.15 |
delphi 선택한 모니터의 화면을 실시간으로 보여주는 프로그램.. (0) | 2015.12.24 |
댓글