Ovládací prvky MFC ActiveX: Distribuce ovládací prvky ActiveX
Tento článek popisuje několik problémů souvisejících s přerozdělení ovládacích prvků ActiveX:
ANSI nebo Unicode řízení verze
Instalace ovládacích prvků ActiveX a soubory DLL Redistributable
Registrace ovládacích prvků
[!POZNÁMKA]
Další informace o přerozdělení ovládací prvky ActiveX, viz Přerozdělení ovládacích prvků.
ANSI nebo Unicode řízení verze
Musí se rozhodnout, zda k dodání ANSI nebo Unicode verze ovládacího prvku nebo obojí.Toto rozhodnutí je založena na přenositelnost faktory spočívající v znakové sady ANSI a Unicode.
ANSI ovládací prvky, které fungují ve všech operačních systémech Win32 umožňují maximální přenositelnost mezi různými operačními systémy Win32.Unicode řídí práci na pouze systém Windows NT (verze 3.51 nebo novější), ale nikoli v systému Windows 95 nebo Windows 98.Pokud primární obavy, řídí loď ANSI přenositelnost.Ovládacích prvků lze spustit pouze v systému Windows NT, může dodávat ovládací prvky ve formátu Unicode.Nelze také zvolit i lodí a aplikaci nainstalujte verzi, která je nejvhodnější pro uživatele operačního systému.
Instalace ovládacích prvků ActiveX a soubory DLL Redistributable
Instalační program, který poskytne ovládacích prvků ActiveX by měly vytvořit zvláštní podadresářem adresáře systému Windows a nainstalujte ovládací prvky.OCX soubory.
[!POZNÁMKA]
Použití systému Windows GetWindowsDirectory rozhraní API instalační program získat název adresáře systému Windows.Chcete název podadresáře odvozen z názvu společnosti nebo produktu.
Instalační program musí nainstalovat potřebné soubory redistributable DLL v adresáři systému Windows.Pokud některá z knihoven DLL již v počítači uživatele, instalační program by měl porovnat jejich verze verze, kterou instalujete.Soubor znovu pouze v případě, že jeho číslo verze je vyšší než soubor již nainstalována.
Protože ovládací prvky ActiveX lze použít pouze do aplikace OLE kontejneru, není nutné distribuovat celou sadu ovládacích prvků s OLE DLL.Lze předpokládat, obsahující aplikaci (nebo samotného operačního systému) má standardní OLE DLL nainstalována.
Registrace ovládacích prvků
Před použitím ovládacího prvku musí příslušné položky vytvořené pro něj v registrační databázi systému Windows.Položka nabídky zaregistrovat nové ovládací prvky uživatelům poskytnout některé kontejnery ovládací prvek ActiveX, ale tato funkce nemusí být k dispozici ve všech kontejnerech.Proto můžete instalační program zaregistrovat ovládací prvky jsou nainstalovány.
Pokud dáváte přednost, můžete napsat vaše instalační program zaregistrovat ovládací prvek přímo místo.
Použití LoadLibrary rozhraní API systému Windows načíst knihovnu DLL ovládacího prvku.Pomocí GetProcAddress získávání adresy funkce "DllRegisterServer".Nakonec volání DllRegisterServer funkce.Následující příklad kódu ukazuje jeden možný způsob, kde hLib uloží popisovač control library a lpDllEntryPoint jsou uloženy adresy funkce "DllRegisterServer".
HINSTANCE hLib = LoadLibrary(pszDllName);
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
AfxMessageBox(IDS_LOADLIBFAILED); //unable to load DLL
iReturn = FAIL_LOAD; //unable to load DLL
}
// Find the entry point.
lpDllEntryPoint = GetProcAddress(hLib, "DllRegisterServer");
if (lpDllEntryPoint != NULL)
(*lpDllEntryPoint)();
else
;// Unable to locate entry point
Výhodou registrace ovládacího prvku přímo je, že nepotřebujete vyvolání a načíst samostatný proces (jmenovitě REGSVR32) zkrácení doby instalace.Navíc protože interní proces registrace, instalační program může zpracovávat chyby a mohou lépe než externí proces nepředvídaných situací.
[!POZNÁMKA]
Dříve, než instalační program nainstaluje ovládací prvek ActiveX, by měl zavolat OleInitialize.Po dokončení instalačního programu volání OleUnitialize.To zajišťuje systémové knihovny DLL systému OLE do řádného stavu registrace ovládacího prvku ActiveX.
MFCx0.DLL by měl zaregistrovat.