void COleTemplateServer::UpdateRegistry(OLE_APPTYPE nAppType, LPCTSTR* rglpszRegister, LPCTSTR* rglpszOverwrite) { ASSERT(m_pDocTemplate != NULL); // get registration info from doc template string CString strServerName; CString strLocalServerName; CString strLocalShortName; if (!m_pDocTemplate->GetDocString(strServerName, CDocTemplate::regFileTypeId) || strServerName.IsEmpty()) { TRACE0("Error: not enough information in DocTemplate to register OLE server.\n"); return; } if (!m_pDocTemplate->GetDocString(strLocalServerName, CDocTemplate::regFileTypeName)) strLocalServerName = strServerName; // use non-localized name if (!m_pDocTemplate->GetDocString(strLocalShortName, CDocTemplate::fileNewName)) strLocalShortName = strLocalServerName; // use long name ASSERT(strServerName.Find(' ') == -1); // no spaces allowed // place entries in system registry if (!AfxOleRegisterServerClass(m_clsid, strServerName, strLocalShortName, strLocalServerName, nAppType, rglpszRegister, rglpszOverwrite)) { // not fatal (don't fail just warn) AfxMessageBox(AFX_IDP_FAILED_TO_AUTO_REGISTER); } }
void COleTemplateServer::UpdateRegistry(OLE_APPTYPE nAppType, LPCTSTR* rglpszRegister, LPCTSTR* rglpszOverwrite) { ASSERT(m_pDocTemplate != NULL); // get registration info from doc template string CString strServerName; CString strLocalServerName; CString strLocalShortName; if (!m_pDocTemplate->GetDocString(strServerName, CDocTemplate::regFileTypeId) || strServerName.IsEmpty()) { TRACE0("Error: not enough information in DocTemplate to register OLE server.\n"); return; } if (!m_pDocTemplate->GetDocString(strLocalServerName, CDocTemplate::regFileTypeName)) strLocalServerName = strServerName; // use non-localized name if (!m_pDocTemplate->GetDocString(strLocalShortName, CDocTemplate::fileNewName)) strLocalShortName = strLocalServerName; // use long name ASSERT(strServerName.Find(' ') == -1); // no spaces allowed int nIconIndex = 0; POSITION pos = AfxGetApp()->GetFirstDocTemplatePosition(); for (int nIndex = 1; pos != NULL; nIndex++) { CDocTemplate* pTemplate = AfxGetApp()->GetNextDocTemplate(pos); if (pTemplate == m_pDocTemplate) { nIconIndex = nIndex; pos = NULL; // set exit condition } } // place entries in system registry if (!AfxOleRegisterServerClass(m_clsid, strServerName, strLocalShortName, strLocalServerName, nAppType, rglpszRegister, rglpszOverwrite, nIconIndex)) { // not fatal (don't fail just warn) AfxMessageBox(AFX_IDP_FAILED_TO_AUTO_REGISTER); } }
void COleObjectFactory::UpdateRegistry(LPCTSTR lpszProgID) { ASSERT_VALID(this); ASSERT(lpszProgID == NULL || AfxIsValidString(lpszProgID)); // use default prog-id if specific prog-id not given if (lpszProgID == NULL) { lpszProgID = m_lpszProgID; if (lpszProgID == NULL) // still no valid progID? return; } // call global helper to modify system registry // (progid, shortname, and long name are all equal in this case) AfxOleRegisterServerClass(m_clsid, lpszProgID, lpszProgID, lpszProgID, OAT_DISPATCH_OBJECT); }