The return value from VCProject::get_Platforms is incorrect in my C++
VS 2005 addin. Can someone tell me what I'm doing wrong?
/////////////////////////////////////////////////////////////////
EnvDTE::_Solution *sln;
EnvDTE::Projects *prjs;
EnvDTE::Project *prj;
VCProjectEngineLibrary::VCProject *vcp;
hr = m_pDTE->get_Solution(&sln);
if ( SUCCEEDED(hr) )
{
hr = sln->get_Projects(&prjs);
if ( SUCCEEDED(hr) )
{
hr = prjs->Item(CComVariant(1), &prj);
IDispatch *disp;
if ( SUCCEEDED(hr) )
{
vcp = VCProjectEngineLibrary::VCProject *)prj;
hr = vcp->get_Platforms(&disp);
VCProjectEngineLibrary::IVCCollection *plats
=(VCProjectEngineLibrary::IVCCollection *)disp;
//////////////////////////////////////////////////////////////////////
If, in the debugger, I expand the value returned in disp, the vtable
clearly is wrong. In fact the memory pointed to by disp contains a
Unicode string containing the current project name, e.g. myproject.vcproj.
Thanks
green