MFC ActiveX에서 PARAM 가능하게 하기
======================================================
MFC에서 프로퍼티를 만든 후
VARIANT COMXCtrl::GetSOMDIP()
{
_variant_t vVal( m_Env.sOMDIP );
// SysAllocString 된 것을 삭제하지 않고 그냥 넘겨주어야 한다.
return vVal.Detach();
}
void COMXCtrl::SetSOMDIP(const VARIANT FAR& newValue)
{
// TODO: Add your property handler here
m_Env.sOMDIP = (LPCTSTR)_bstr_t( _variant_t( newValue ) ) ;
SetModifiedFlag();
}
VARIANT COMXCtrl::GetNOMDPort()
{
_variant_t vVal( m_Env.nOMDPort );
return vVal.Detach();
}
void COMXCtrl::SetNOMDPort(const VARIANT FAR& newValue)
{
// TODO: Add your property handler here
m_Env.nOMDPort = _variant_t( newValue );
SetModifiedFlag();
}
...
아래처럼 프로퍼티 변환 함수에 해당 프로퍼티에 대한것을
기입한다.
void COMXCtrl::DoPropExchange(CPropExchange* pPX)
{
ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
COleControl::DoPropExchange(pPX);
// TODO: Call PX_ functions for each persistent custom property.
if (pPX->GetVersion() == (DWORD)MAKELONG(_wVerMinor, _wVerMajor))
{
PX_String(pPX,_T("sOMDIP"), m_Env.sOMDIP );
PX_Long(pPX,_T("nOMDPort"), m_Env.nOMDPort );
PX_String(pPX,_T("sGroupDIP"), m_Env.sGroupDIP );
PX_Long(pPX,_T("nGroupDPort"), m_Env.nGroupDPort );
PX_String(pPX,_T("sSiteID"), m_Env.sSiteID );
PX_String(pPX,_T("sServerID"), m_Env.sServerID );
PX_String(pPX,_T("sUserID"), m_Env.sUserID );
PX_String(pPX,_T("sPasswd"), m_Env.sPasswd );
}
}
그렇게 하면 아래처럼 웹페이지에서 쓸 수 있게 된다.
<TD>
<object id=omx width=400 height=500
classid="clsid:6D2A9FCF-749F-4648-A8C8-F16300DE6FF5"
codebase="http://localhost/ActiveApproval/ActiveApproval.cab#version=1.0.1.7"
>
<PARAM NAME="sOMDIP" VALUE="61.37.47.62">
<PARAM name="nOMDPort" value="9204">
<PARAM name="sGroupDIP" value="61.37.47.62">
<PARAM name="nGroupDPort" value="9203">
<PARAM name="sSiteID" value="intracool">
<PARAM name="sServerID" value="jiran">
<PARAM name="sUserID" value="bro">
<PARAM name="sPasswd" value="1111">
</object>
</TD>
출처 : http://neri.cafe24.com/menu/bbs/view.php?id=kb&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&keyword=PARAM&select_arrange=headnum&desc=asc&no=191