Article ID: 152071
Article Last Modified on 11/21/2006
void IterateCollection(void)
{
Application App; // wrapper class for the 'Application' object
Project Proj; // wrapper class for the 'Project' object
Resources Res; // wrapper class for the 'Resources' object
CString lpszFileName ("c:\\temp\\project2.mpp");
App.CreateDispatch("MSProject.Application");
VARIANT vFileName;
VariantInit(&vFileName);
V_VT(&vFileName) = VT_BSTR;
V_BSTR(&vFileName) = lpszFileName.AllocSysString();
App.FileOpen(vFileName);
Proj.AttachDispatch(App.GetActiveProject());
Res.AttachDispatch(Proj.GetResources());
VARIANT vCount;
VariantInit(&vCount);
V_VT(&vCount) = VT_I4;
vCount = Res.Count();
// the index of the collection starts with 1, not 0
for (int i = 1 ; i <= vCount.lVal ; i++)
{
Resource r; // wrapper class for the 'Resource' object
VARIANT vResult, vIndex, vStr;
VariantInit(&vResult);
VariantInit(&vIndex);
V_VT(&vIndex) = VT_I2;
V_I2(&vIndex) = i;
static BYTE parms[] = VTS_VARIANT;
Res.InvokeHelper(DISPID_VALUE, DISPATCH_METHOD, VT_VARIANT,
(void*)&vResult, parms, &vIndex);
r.AttachDispatch(vResult.pdispVal);
vStr = r.GetName();
// ... 'vStr' now contains the Name property
}
}
Additional query words: 2.00 2.10 2.20 4.00 4.10
Keywords: kbinfo kbautomation kbcode kbhowto KB152071