ATL 로 작성한 Active-X 컨트롤에서 param 처리하는 방법

 

ATL 로 작성한 Active-X 컨트롤러에서 html 페이지의 param 변수를 입력받는 방법은 아래와 같다.


 


1. ATL 클래스에 IPersistPropertyBagImpl 인터페이스를 상속받아야 한다.


2. IPersistPropertyBagImpl 의 Load 메소드를 아래와 같이 선언한다.


 STDMETHOD(Load)(LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog);
3. IPersistPropertyBagImpl 의 Load 메소드를 구현한다.


4. 클래스뷰에서 ATL 클래스의 인터페이스에 마우스 오른쪽 버튼을 클릭하여서 나온 팝업메뉴에서 "추가 => 속성추가" 메뉴를 클릭한다.


5. 4번에서 나온 대화상자에서 속성형식 및 속성이름을 설정한다.


 


예제는 아래와 같다.


 


class ATL_NO_VTABLE CErrorMonitorAtl :
 public IErrorMonitorAtl,
 public IPersistStreamInitImpl<CErrorMonitorAtl>,
 public IOleControlImpl<CErrorMonitorAtl>,
 public IOleObjectImpl<CErrorMonitorAtl>,
 public IOleInPlaceActiveObjectImpl<CErrorMonitorAtl>,
 public IViewObjectExImpl<CErrorMonitorAtl>,
 public IOleInPlaceObjectWindowlessImpl<CErrorMonitorAtl>,
#ifdef _WIN32_WCE // 컨트롤을 제대로 로드하려면 Windows CE에 IObjectSafety가 필요합니다.
 public IObjectSafetyImpl<CErrorMonitorAtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>,
#endif
 public CComControl<CErrorMonitorAtl>,
 public IPersistPropertyBagImpl<CErrorMonitorAtl>,
 public IObjectSafetyImpl<CErrorMonitorAtl,INTERFACESAFE_FOR_UNTRUSTED_CALLER|INTERFACESAFE_FOR_UNTRUSTED_DATA>
{
// 생략


public:
 STDMETHOD(get_server_ip)(BSTR* pVal);
 STDMETHOD(put_server_ip)(BSTR newVal);
 STDMETHOD(Load)(LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog);
}