본문 바로가기

Programming/ActiveX

[ActiveX] 이벤트 추가하기

간단하게 추가하는 방법은 컨트롤 클래스에서 우클릭후, 이벤트 추가 클릭하면 된다.


내가 말하고자 하는 내용은 이를 코딩으로 추가하는 것이다.


1. XXX.idl 파일에서


 // CApp200Ctrl의 이벤트 디스패치 인터페이스입니다.

 [ uuid(어쩌구 저쩌구 여기는 sID값이 있는곳입니다.),
       helpstring("App200 Control의 이벤트 인터페이스") ]
 dispinterface _DAPP200Events
 {
      properties:
       // 이벤트 인터페이스에 속성이 없습니다.

      methods:
      [id(1)] void FireRun(void);                         //변수가 없는 이벤트 추가
      [id(2)] void FireGetID(BSTR _sessionID);      //변수가 있는 이벤트 추가
 };

2. XXXCtrl.h 파일에서


class XXX : COleControl

{

    ..............

    ............

    ............

    ............

// 디스패치와 이벤트 ID입니다.
public:

    enum {eventFireGetID = 2L, eventFireRun = 1L};

protected:

    void FireGuidePopupDlg(void)
    {
          FireEvent(eventidFireGuidePopupDlg, EVENT_PARAM(VTS_NONE));
    }


    void FireGetSessionID(LPCTSTR _sessionID)
    {
          FireEvent(eventFireRun, EVENT_PARAM(VTS_NONE), _sessionID);
    }



3. XXXCtrl.cpp 파일에서


BEGIN_EVENT_MAP(CXXXCtrl, COleControl)

    //변수가 없는 이벤트 추가(이벤트 이름을 FireRun이라 할때)

    EVENT_CUSTOM_ID("FireRun",

                           eventFireRun,

                           FireRun,

                           VTS_NONE)


    //변수가 있는 이벤트 추가(이벤트 이름을 FireGetID라 할때)

    EVENT_CUSTOM_ID("FireGetID",

                           eventFireGetID,

                           FireGetID,

                           VTS_BSTR)


이러면 끝~