Contrôles ActiveX MFC : Distribution de contrôles ActiveX
Cet article décrit plusieurs problèmes liés à redistribuer des contrôles ActiveX :
ANSI ou versions de contrôle Unicode
Installer les DLL de contrôles et redistribuables ActiveX
Enregistrement de contrôles
[!REMARQUE]
Pour plus d'informations sur la redistribution des contrôles ActiveX, consultez Redistribuer les contrôles.
ANSI ou versions de contrôle Unicode
Vous devez décider si distribuer une version ANSI ou Unicode du contrôle, ou les deux.Cette décision dépend de facteurs de portabilité inhérents à ANSI et aux jeux de caractères Unicode.
Les contrôles ANSI, qui fonctionnent sur tous les systèmes d'exploitation Win32, autorisent la portabilité maximum entre les différents systèmes d'exploitation Win32.Les contrôles Unicode est conditionné à Windows NT (version 3,51 ou ultérieure), mais pas sous Windows 95 ou Windows 98.Si la portabilité est votre problème primaire, les contrôles ANSI de bateau.Si vos contrôles fonctionnent uniquement sur Windows NT, vous pouvez accélérer les contrôles Unicode.Vous pouvez également choisir d'accélérer et d'effectuer installer votre application la version la plus appropriée de système d'exploitation de l'utilisateur.
Installer les DLL de contrôles et redistribuables ActiveX
Le programme d'installation que vous fournissez à vos contrôles ActiveX doit créer un sous-répertoire spéciale du répertoire Windows et installer les fichiers du .OCX des contrôles qu'il contient.
[!REMARQUE]
Utilisez l'API de GetWindowsDirectory de fenêtres dans votre programme d'installation pour obtenir le nom du répertoire Windows.Vous pouvez dériver le nom de sous-répertoire du nom de votre société ou produit.
Le programme d'installation doit installer les fichiers redistribuables DLL nécessaires dans le répertoire système de Windows.Si l'une des DLL sont déjà présents sur l'ordinateur de l'utilisateur, le programme d'installation doit comparer les versions avec les versions que vous installez.Réinstallez un fichier uniquement si son numéro de version est plus élevée que le fichier déjà installé.
Étant donné que les contrôles ActiveX peuvent être utilisés uniquement dans les applications de conteneur OLE, il n'est pas nécessaire de distribuer l'ensemble des DLL OLE à vos contrôles.Vous pouvez supposer que l'application conteneur (ou le système d'exploitation lui-même) dispose des DLL standard OLE installés.
Enregistrement de contrôles
Avant qu'un contrôle puisse être utilisé, les entrées appropriées doivent être créées pour lui dans la base de données d'inscription Windows.Certains conteneurs de contrôle ActiveX fournissent un élément de menu pour les utilisateurs à de nouveaux contrôles de registre, mais cette fonctionnalité peut ne pas être disponible dans tous les conteneurs.Par conséquent, vous pouvez souhaiter que votre programme d'installation pour enregistrer des contrôles lorsqu'ils sont installés.
Si vous préférez, vous pouvez écrire votre programme d'installation pour stocker directement le contrôle à la place.
Utilisez les API Windows du LoadLibrary pour charger la DLL de contrôle.Ensuite, utilisez GetProcAddress d'obtenir l'adresse de la fonction « DllRegisterServer ».Enfin, appelez la fonction d' DllRegisterServer .L'exemple de code suivant illustre une méthode possible, où hLib stocke le handle de la bibliothèque de contrôles, et magasins d' lpDllEntryPointl'adresse de la fonction « 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
L'avantage de stocker le contrôle est directement que vous n'avez pas besoin d'appeler et charger un processus distinct (à savoir, REGSVR32), en réduisant le moment de l'installation.En outre, car l'inscription est un processus interne, le programme d'installation peut gérer des erreurs et des situations imprévues mieux qu'un processus externe peut.
[!REMARQUE]
Avant que votre programme d'installation installe un contrôle ActiveX, il doit appeler OleInitialize.Lorsque votre programme d'installation est terminée, appelez OleUnitialize.Cela garantit que les DLL système OLE ont l'état approprié pour stocker un contrôle ActiveX.
Vous devez enregistrer MFCx0.DLL.