|
그냥은 받을수 없습니다.
해당 컴포넌트를 상속받아서 TWinControl처럼 Handle을 부여해서 핸들을 가진 새로운 컴포넌트를 만들거나,
프로그램 내에서 컴포넌트에 기능을 추가하는 방법을 써야 합니다.
방법의 핵심만 이해하면 둘다 가능할 것입니다.
실험은 적접 안해봤는데 아마 될것입니다.
Non-Visual Component 에도 메시지를 처리하기 위한 WndProc가 존재합니다.
WndProc조차 없는 컴포넌트라면 이건 해당 프로시저부터 만둘어주면 됩니다.
private영역에 선언된 것들은 참조가 될수 없으므로 원 소스(헤더파일)에서
WndProc를 public 영역을 옮겨줍니다.
그리고 아래처럼 핸들을 얻습니다.
myHandle = AllocateHWnd ( 해당컴포넌트->WndProc );
쉽죠.. 목적하는 핸들을 얻었습니다.
그리고 필요할때 이 핸들로 메시지를 보내면 해당 컴포넌트가 받게 됩니다.
그런데 핸들이 없는 컴포넌트에게 핸들을 할당한 것이므로,
필요없을때 핸들을 해제해 줘야 합니다.
DeAllocateHWnd(myHandle);
이렇게 하시면 될 것입니다.
새로 컴포넌트를 만드는 것보다 그냥 코딩으로 해결하시는게 나중을 위해 아마 나을 것 같습니다.
참고로 두 함수의 help를 보시면 example까지 잘 되어 있습니다.
그럼..
스마일 님이 쓰신 글 :
: TWinControl이나 TCustomControl등을 상속 받아 만드는 Visual Component의 경우
: Handle을 얻어올 수 있으므로 메세지를 받을 때 이 Handle을 사용하면 되는데요.
: 그런데
: TPersitent등을 상속받은 Non-Visual Component의 경우는
: 메세지를 어떻게 받을 수 있나요?
|