COM高手们,这个问题怎么解决?
是一个类型转换,把enum{a,b,c} *pMenuState转换成VARIANT*
可是怎么试都不行呀,为什么呢?(下面代码是我其中一个试验)
void CDECtrl::SetContextMenu()
{
USES_CONVERSION;
VARIANT* pMenuState;
VARIANT* pMenuText;
pMenuText = new VARIANT[7];
pMenuState = new VARIANT[7];
CString strMenuText;
for(int i=0; i<7; i++)
{
strMenuText.LoadString(201 + i);
(pMenuText + i)->vt = VT_BSTR;
(pMenuText + i)->bstrVal = strMenuText.AllocSysString();
(pMenuState + i)->vt = VT_UI1;
(pMenuState + i)->bVal = 0;
strMenuText.Empty();
}
//主要是下面的代码,出了异常
m_pDE->SetContextMenu(pMenuText, pMenuState);
delete []pMenuText;
delete []pMenuState;
}