C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[50392] Re:[질문]폼을 포함한 DLL을 로드하여 ... 이번에는 해답에 가까운 답변입니다.
장성호 [nasilso] 2176 읽음    2007-08-27 14:50
님의 질문 덕택에 저도 여러가지 테스트 해보게 되었습니다.
그덕에 아래와 같은 사실을 알게되었으니 제가 감사하다는 말씀을 드려야 겠네요.

[답변]
exe 및 dll 을 Comfile할때  Project  Options에서
Packages 탭 에서 Runtime packages를   exe및 dll둘다 check한후 comfile해서 테스트 해보세요

오늘 여러가지로 테스트 결과 singletone  TApplication 객체인 Application이
저  Runtime packages  가    uncheck되었을때는 dll과 exe가 다른 객체로 나타나더군요
둘다 check되었을때는 같은 객체가 되어서
TOpenDialog를 dll에서 사용하는데 껌벅거리는 문제가 없어지구요

dll안에 있는 폼이 작어표시줄에 나타나는원인도
Application객체가 다르기 때문이었습니다.

먼저 답변에 말씀드렸듯이 TOpenDialog의 조상 TCommonDialog 가   
comdlg32.dll에 있는 API  GetOpenFileNameA 를 호출하기 전에 Applicaoion에 Hook을 걸었다가
GetOpenFileNameA 함수 호출후 Hook을 푸는데..

dll의 Application객체가  exe의 Application과 다르다 보니 TOpenDialog에서 이상한 현상이 나왔던것 같습니다.


[추신]

고수님들께 추가질문 드립니다.

Runtime packages 의 check / uncheck에 따라서 Application 객체가 하나일수도 있구
둘이 될수도 있던데...
왜그런지 정확한 comfile원리와
exe가 run될때 , dll이 load될때 어떻게 동작하는지 설명좀 해주실수 있겠습니까?

미리 감사말씀 드립니다.

그럼




시몬 님이 쓰신 글 :
: 폼을 포함한 DLL을 만들었습니다.
: DLL에 있는 폼에서는 TOpenDialog를 사용한 파일열기 기능이 있구요.
:
: 이 DLL을 로드하여 폼을 띄워서 사용하는데 잘 동작합니다.
: 그런데 딱 하나 TOpenDialog를 Execute()해서 다이얼로그가 띄웠다가 닫으면 갑자기
: DLL을 로드해서 띄운 폼이 없어져 버립니다.
: 그냥 없어지는게 아니라 그 자리에는 복원(repaint)이 안됩니다. - 스샷 첨부파일을 올렸습니다
:
: 이런 현상이 왜 일어날까요???
: 그런데 더 이상한건 사라져 버린 윈도우에 메세지도 잘 도착하고 그 폼에 public으로 선언된 함수도
: 잘 동작합니다.
: 현재 위치하고 사이즈도 확인을 했구요..
:
: 제발 고수님들 조그만 조언이라도 부탁드립니다.

+ -

관련 글 리스트
50372 [질문]폼을 포함한 DLL을 로드하여 사용할때 TOpenDialog를 사용하면 안되나요?? 시몬 2134 2007/08/24
50392     Re:[질문]폼을 포함한 DLL을 로드하여 ... 이번에는 해답에 가까운 답변입니다. 장성호 2176 2007/08/27
50394         Re:Re:[질문]폼을 포함한 DLL을 로드하여 ... 이번에는 해답에 가까운 답변입니다. 박지훈.임프 3191 2007/08/27
50386     Re:[질문]폼을 포함한 DLL을 로드하여 사용할때 TOpenDialog를 사용하면 안되나요?? 장성호 2390 2007/08/27
50374     Re:[질문]폼을 포함한 DLL을 로드하여 사용할때 TOpenDialog를 사용하면 안되나요?? 장성호 2386 2007/08/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.