안되는 줄 알았는데, 이전 직장에 함께근무했던 선배한테 물어보니 된다는 군요...^^
(혼자 도배하는 기분이네요)
[
uuid(AAA60663-440E-446E-99AF-2A0DEEB389C4),
helpstring("_IWebTreeEvents Interface")
]
dispinterface _IWebTreeEvents
{
properties:
methods:
[id(1), helpstring("method BeforeMove")] HRESULT BeforeMove([in,
out]VARIANT_BOOL *Cancel);
};
HRESULT
Fire_BeforeMove(
VARIANT_BOOL
*
Cancel)
{
CComVariant
varResult;
T* pT
= static_cast<T*>(this);
int
nConnectionIndex;
CComVariant*
pvars = new
CComVariant[1];
int
nConnections = m_vec.GetSize();
for (nConnectionIndex
= 0; nConnectionIndex
< nConnections;
nConnectionIndex++)
{
pT->Lock();
CComPtr<IUnknown>
sp = m_vec.GetAt(nConnectionIndex);
pT->Unlock();
IDispatch* pDispatch =
reinterpret_cast<IDispatch*>(sp.p);
if (pDispatch
!= NULL)
{
VariantClear(&varResult);
pvars[0].vt
= VT_VARIANT | VT_BYREF;
VARIANT
varCancel;
varCancel.vt
= VT_BOOL;
varCancel.boolVal
= *Cancel;
pvars[0].pvarVal
= &varCancel;
DISPPARAMS disp = {
pvars, NULL, 1,
0 };
pDispatch->Invoke(0x1,
IID_NULL, LOCALE_USER_DEFAULT,
DISPATCH_METHOD, &disp,
&varResult, NULL,
NULL);
if (varCancel.vt
& VT_BOOL)
*Cancel
= varCancel.boolVal;
else
*Cancel
=
VARIANT_FALSE;
}
}
delete[]
pvars;
return
varResult.scode;
}
[최초 등록일: ]
[최종 수정일: 5/30/2006]