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);
}