void GetCustomObjectFactory(CPartDoc* pPartDoc)
{
// Step 1: Get the Part object
CPart pCurrentPart;
LPDISPATCH pPartDispatch = pPartDoc->GetPart(); // Assuming GetPart returns LPDISPATCH
if (pPartDispatch)
{
pCurrentPart.AttachDispatch(pPartDispatch);
}
else
{
AfxMessageBox(_T("Failed to get Part from PartDoc"));
return;
}
// Step 2: Prepare the BSTR identifier
BSTR qId = SysAllocString(L"CAAIAObject");
if (!qId)
{
AfxMessageBox(_T("Failed to allocate BSTR for identifier"));
return;
}
// Step 3: Get the Factory object
CFactory pFactory;
LPDISPATCH pFactoryDispatch = pCurrentPart.GetCustomerFactory(&qId);
SysFreeString(qId); // Free the BSTR after use
if (pFactoryDispatch)
{
pFactory.AttachDispatch(pFactoryDispatch);
}
else
{
AfxMessageBox(_T("Failed to get Factory from Part"));
return;
}
// Step 4: Attach the custom object factory directly if CObjectGIDFactory is derived from COleDispatchDriver
CObjectGIDFactory q_pCustomObj;
q_pCustomObj.AttachDispatch(pFactoryDispatch);
// Now you can use q_pCustomObj to interact with your custom object factory
}
this is Tlb style. CAAIAObject is my Customer Class. how to translate it to COM style
于 2024-09-13 14:53:08 首次发布