// NEU: Die Funktion UpdateRegistry muß definiert werden, wenn die Erweiterung // sich selbst in der RegDB registrieren soll (empfohlen!!). // Der ProgID (hier 'TRiAS.TextExtension.1') ist eine ZeichenKette, die die Erweiterung // in der RegDB repräsentiert. Das Format sollte beibehalten werden. Die '... .1' // steht für die VersionsNummer. // Der KlassenName (hier die Stringresource hinter IDS_LONGCLASSNAME) ist eine // normal-lesbare Zeichenkette, die lokalisiert wird (deshalb in der Resource) und // die Bezeichnung der Erweiterung definiert. // bool UpdateRegistry (bool fRegister) // RegDB aktualisieren (initialisieren/löschen) { if (fRegister) { // RegDB initialisieren return ExtOleRegisterExtensionClass (g_hInstance, CLSID_TextExtension, TEXT("TRiAS.TextExtension.1"), IDS_LONGCLASSNAME, TEXTEXT_MAJORVERSION, TEXTEXT_MINORVERSION, EFUnLoadable|EFVisible|EFUnLoadable); } else { // RegDB säubern return ExtOleUnregisterClass (CLSID_TextExtension, TEXT("TRiAS.TextExtension.1")); } return true; // alles ok }
BOOL UpdateRegistry (BOOL fRegister) { // unseren aktuellen Namen besorgen { CCurrentUser regCfg (KEY_READ, g_cbRegConfig); DWORD dwSize = _MAX_PATH; if (!regCfg.GetSubSZ (g_cbTRiASName, g_cbTRiAS, dwSize)) strcpy (g_cbTRiAS, g_cbCopyrightName); // default } if (fRegister) { // RegDB initialisieren // Erweiterung selbst registrieren if (!ExtOleRegisterExtensionClass (_Module.GetModuleInstance(), CLSID_Statist, g_cbStatistProgID, IDS_LONGCLASSNAME, STATIST_MAJORVERSION, STATIST_MINORVERSION, EFPreLoad|EFUnLoadable)) return FALSE; // registers component categories CString strCatId; strCatId.Format(IDS_CATIDDESC_STATVALUE, g_cbTRiAS); _ASSERTE(strCatId.GetLength() > 0); CreateComponentCategory (CATID_TRiASStatistValue, strCatId); strCatId.Format (IDS_CATIDDESC_STATVALUESCONTAINER, g_cbTRiAS); _ASSERTE(strCatId.GetLength() > 0); CreateComponentCategory (CATID_TRiASStatistValuesContainer, strCatId); } else { // RegDB säubern RemoveComponentCategory (CATID_TRiASStatistValuesContainer); RemoveComponentCategory (CATID_TRiASStatistValue); if (!ExtOleUnregisterClass (CLSID_Statist, g_cbStatistProgID)) return FALSE; } return TRUE; // alles ok }
// // NEU: Die Funktion UpdateRegistry muß definiert werden, wenn die Erweiterung // sich selbst in der RegDB registrieren soll (empfohlen!!). // Der ProgID (hier 'TRiAS.Simple.1') ist eine ZeichenKette, die die Erweiterung // in der RegDB repräsentiert. Das Format sollte beibehalten werden. Die '... .1' // steht für die VersionsNummer. // Der KlassenName (hier die Stringresource hinter IDS_LONGCLASSNAME) ist eine // normal-lesbare Zeichenkette, die lokalisiert wird (deshalb in der Resource) und // die Bezeichnung der Erweiterung definiert. // BOOL UpdateRegistry (BOOL fRegister) // RegDB aktualisieren (initialisieren/löschen) { if (fRegister) { // RegDB initialisieren BOOL fSuccess = ExtOleRegisterExtensionClass (g_hInstance, CLSID_EDBSImport, TEXT("TRiAS.EDBSImport.1"), IDS_LONGCLASSNAME, EDBSIMPORT_MAJORVERSION, EDBSIMPORT_MINORVERSION, EFUnLoadable|EFCanImport); if (!fSuccess) return false; return ExtOleRegisterImportClass (g_hInstance, CLSID_EDBSImport, TEXT("TRiAS.EDBSImport.1"), IDS_FORMATDESCRIPTION, IDS_DEFAULTEXTENSION); } else { // RegDB säubern return ExtOleUnregisterClass (CLSID_EDBSImport, TEXT("TRiAS.EDBSImport.1")); } return true; // alles ok }
/////////////////////////////////////////////////////////////////////////////////////////////// // Der ProgID (hier 'TRiAS.Editierung.2') ist eine Zeichenkette, die die Erweiterung in der // RegDB repräsentiert. Das Format sollte beibehalten werden. Die '... .2' steht für die // VersionsNummer. Der KlassenName (hier die Stringresource hinter IDS_LONGCLASSNAME) ist eine // normal-lesbare Zeichenkette, die lokalisiert wird (deshalb in der Ressource) und die // Bezeichnung der Erweiterung definiert. BOOL UpdateRegistry (BOOL bRegister) // RegDB aktualisieren (initialisieren/löschen) { if (bRegister) // RegDB initialisieren ... { bool bRet = ExtOleRegisterExtensionClass (g_hInstance, CLSID_GeometrieEditierung2, TEXT("TRiAS.Editierung.2"), IDS_LONGCLASSNAME, GEOEDIT_MAJORVERSION, GEOEDIT_MINORVERSION, EFPreLoad // Durch die Herausnahme der beiden nachfolgenden Flags wird die Erweiterung nicht // entladbar und systemintern // |EFUnLoadable|EFVisible ); CCurrentUser cuExtConfig (RegistryExtPathEdit, true); // ... durch Eintrag der Schlüssel "MinMarkGroesse" bzw. "MaxMarkGroesse" für Unter- bzw. // Obergrenze der Pixelgröße der Markierungsquadrate ResourceFile RF (g_pDLLName); ResString UMarkGroesse (ResID (IDS_UMARKGROESSE, &RF), 30); ResString OMarkGroesse (ResID (IDS_OMARKGROESSE, &RF), 30); DWORD dwUWert = iUGr; // default-Wert des Schlüssels "MinMarkGroesse" DWORD dwOWert = iOGr; // bzw. des Schlüssels "MaxMarkGroesse" (aus EditKonst.h) // wenn Schlüssel "MinMarkGroesse" bzw. "MaxMarkGroesse" bisher noch nicht in der RegDB // existieren, dann jetzt anlegen if (!cuExtConfig.GetDWORD (UMarkGroesse.Addr(), dwUWert)) cuExtConfig.SetDWORD (UMarkGroesse.Addr(), dwUWert); if (!cuExtConfig.GetDWORD (OMarkGroesse.Addr(), dwOWert)) cuExtConfig.SetDWORD (OMarkGroesse.Addr(), dwOWert); // Eintrag der Schlüssel "MarkColor", "MarkColorBegin", "MarkColorEnd" und // "MarkColorThickness" für farbliche Gestaltung der Markierungsquadrate ResString resMarkColor (ResID (IDS_MARKCOLOR, &RF), 30); ResString resMarkColorBegin (ResID (IDS_MARKCOLORBEGIN, &RF), 30); ResString resMarkColorEnd (ResID (IDS_MARKCOLOREND, &RF), 30); ResString resMarkBoundThick (ResID (IDS_MARKBOUNDTHICK, &RF), 30); DWORD dwColor0 = ulGW0; // default-Werte (aus EditKonst.h) DWORD dwColor1 = ulGW1; DWORD dwColor2 = ulGW2; DWORD dwThickness = iThick; if (!cuExtConfig.GetDWORD(resMarkColor.Addr(), dwColor0)) cuExtConfig.SetDWORD(resMarkColor.Addr(), dwColor0); if (!cuExtConfig.GetDWORD(resMarkColorBegin.Addr(), dwColor1)) cuExtConfig.SetDWORD (resMarkColorBegin.Addr(), dwColor1); if (!cuExtConfig.GetDWORD(resMarkColorEnd.Addr(), dwColor2)) cuExtConfig.SetDWORD(resMarkColorEnd.Addr(), dwColor2); if (!cuExtConfig.GetDWORD(resMarkBoundThick.Addr(), dwThickness)) cuExtConfig.SetDWORD(resMarkBoundThick.Addr(), dwThickness); return bRet; } else // RegDB säubern // die eigenen Einträge müßten hier wieder gelöscht werden !!! return ExtOleUnregisterClass (CLSID_GeometrieEditierung2, TEXT("TRiAS.Editierung.2")); return true; // alles ok }