Désactivation de l’option Actif quand il est visible
Un contrôle a deux états de base : actif et inactif. Traditionnellement, ces états se distinguent par le fait que le contrôle avait une fenêtre. Un contrôle actif avait une fenêtre ; un contrôle inactif n’a pas été effectué. Avec l’introduction de l’activation sans fenêtre, cette distinction n’est plus universelle, mais s’applique toujours à de nombreux contrôles.
Par rapport au reste de l’initialisation généralement effectuée par un contrôle ActiveX, la création d’une fenêtre est une opération extrêmement coûteuse. Dans l’idéal, un contrôle différerait la création de sa fenêtre jusqu’à ce qu’elle soit absolument nécessaire.
De nombreux contrôles n’ont pas besoin d’être actifs tout le temps qu’ils sont visibles dans un conteneur. Souvent, un contrôle peut rester dans l’état inactif jusqu’à ce que l’utilisateur effectue une opération qui exige qu’elle devienne active (par exemple, en cliquant avec la souris ou en appuyant sur la touche TAB). Pour faire en sorte qu’un contrôle reste inactif jusqu’à ce que le conteneur doit l’activer, supprimez l’indicateur OLEMISC_ACTIVATEWHENVISIBLE des divers indicateurs du contrôle :
static const DWORD BASED_CODE _dwNVC_MFC_AxOptOleMisc =
OLEMISC_SETCLIENTSITEFIRST |
OLEMISC_INSIDEOUT |
OLEMISC_CANTLINKINSIDE |
OLEMISC_RECOMPOSEONRESIZE;
L’indicateur OLEMISC_ACTIVATEWHENVISIBLE est automatiquement omis si vous désactivez l’option Activer lors de l’affichage dans la page Contrôle Paramètres de l’Assistant Contrôle ActiveX MFC lorsque vous créez votre contrôle.