IDispatch* GetDispatchPtr(VARIANT &var)
{
VARIANT *pvar = &var;
IDispatch* pdisp = NULL;
if (var.vt == (VT_BYREF | VT_VARIANT)) { // 1
pvar = var.pvarVal;
}
if (pvar->vt == (VT_BYREF | VT_DISPATCH)) { // 2
pdisp = *pvar->ppdispVal;
}
else if (pvar->vt == VT_DISPATCH) { // 3
pdisp = pvar->pdispVal;
}
return pdisp;
}
ex)
ADODB::_RecordsetPtr sp(GetDispatchPtr(var));
VB에서 Host 객체를 Early Binding 으로 호출 (컴포넌트를 참조한후 실행할 때..)
=> 3번만 호출
VB에서 Host 객체를 Late Binding 으로 호출 (CreateObejct 사용..)
=> 2번만 호출
VBScript 에서 Host 객체를 Late Binding 으로 호출 (VBScript 에서는 Late Binding만 지원)
=> 1번, 3번 호출
'Dev > Windows' 카테고리의 다른 글
ATL Com Project VC++ 6 에서 VC++ 8 변환(업그레이드) (0) | 2009.03.27 |
---|---|
유니코드(UNICODE), C++ (0) | 2008.10.16 |
ffmpeg (0) | 2008.04.09 |
벤치마킹 (0) | 2007.10.17 |
달라진 기능 (IIS 6.0) (0) | 2007.09.28 |