RunTime Package를 쓰세요
Dll 및 Exe를 Compile할때 Project-Option 에서 Run-time Package를 쓰도록 설정해서 Compile해보세요
그러면 vclxx.bpl , rtlxx.bpl 등을 exe와 함께 따로 배포해 줘야 하지만
위와같은 문제는 해결될 것입니다.
기억이 가물가물 한데...
CM_MOUSEENTER , CM_MOUSELEAVE는 대게
Application이 Idle상태일때 (메세지큐에 처리할 메세지가 없을때)
Mouse아래의 Control이 변화하는지 체크해서 인위적으로 CM_MOUSEENTER , CM_MOUSELEAVE 메세지를 던져줍니다.(항상그런것은 아님,vcl 버젼에 따라 틀리기도 하고)
runtime-package를 쓰지 않고
dll에서 만들어진 Form은
exe에 있는 Global객체인 Application과 Screen객체에서 정확히 판단을 할수가 없습니다.
(TForm은 생성될때 Screen.Forms에 자신을 등록하고 , free될때 Screen.Forms에서 remove함)
....
그럼....
레드수샤 님이 쓰신 글 :
: 안녕하세요.
:
: 초초초보입니다;;;
:
: 아래와 같은 문제로 1주일째 뜬눈으로 밤을 지새웁니다 ㅠ_ㅠ
:
: -------------
: DLL에 포함된 Form을 생성하고 화면에 출력하면,
:
: 그 화면에 포함된 Edit 에서 CM_MOUSELEAVE, CM_MOUSEENTER 등이 발생하지 않습니다.
:
: 물론 같은 Edit 를 별도의 application에 넣고 실행하면, CM_MOUSELEAVE, CM_MOUSEENTER 이 잘 발생합니다.
: -------------
:
: 이거 어떻게 해야하나요? ㅠ_ㅠ
|