Q&A

  • 컴포넌트의 이벤트 - OleControl의 이벤트 연결 과정을...
대단히 난해한 질문을 올리게 되었습니다.

OleControl을 import하면 wrapper를 포함하는 유닛이 생기지요.

그 wrapper들은 해당 OleControl의 이벤트마다 대응하는 이벤트 프로퍼티와

이벤트 핸들러의 참조를 보존하는 private 멤버들을 가지고 있습니다.

하지만, 정작 OleControl에서 이벤트가 발생했을때 어떻게 그 이벤트 핸들러를

찾아서 호출하는지 하는 메카니즘은 wrapper에는 나타나 있지 않습니다.

헌데 그 과정을 가로채서 무언가를 해야만 할 필요가 생겼기에 이렇게 질문드립니다.

그러니까, OleControl 자체에서 이벤트가 발생했을때, 그것이 어떻게 델파이 코드상의

이벤트 핸들러를 호출하게 되는지 그 과정을 알고 싶습니다.

TOleControl의 소스 중 어디엔가 TOleControl을 상속받아 만들어진 컴포넌트상의

이벤트 프로퍼티들을 '수집'해가지고 동적으로 이벤트용 dispinterface를 만들어서

컨트롤의 IConnectionPoint.Advise 메소드에 그 dispinterface의 포인터를

전달해주는 코드가 있을 것으로 생각하는데, 어셈블리가 섞이다 보니 잘 분별하지 못하고

있습니다.

제가 생각을 잘못하고 있는것인지, 그것만이라도 알려주시면 감사하겠습니다.

읽어주셔서 고맙습니다. 다들 감기 조심하시고 건강하십시오.

0  COMMENTS