AfxOleRegisterControlClass

Enregistre la classe de contrôle avec la base de données d'inscription Windows.

BOOL AFXAPI AfxOleRegisterControlClass(
   HINSTANCE hInstance,
   REFCLSID clsid,
   LPCTSTR pszProgID,
   UINT idTypeName,
   UINT idBitmap,
   int nRegFlags,
   DWORD dwMiscStatus,
   REFGUID tlid,
   WORD wVerMajor,
   WORD wVerMinor 
);

Paramètres

  • hInstance
    Handle d'instance du module associé à la classe de contrôle.

  • clsid
    L'ID de classe du contrôle.

  • pszProgID
    L'ID de programme du contrôle.

  • idTypeName
    L'ID de ressource de la chaîne contenant un nom utilisateur-lisible de type pour le contrôle.

  • idBitmap
    L'ID de ressource de la bitmap représentant le contrôle OLE dans une barre d'outils ou une palette.

  • nRegFlags
    Contient un ou plusieurs des indicateurs suivants :

    • afxRegInsertable permet au contrôle apparaisse dans la boîte de dialogue d'objet d'insertion pour les objets OLE.

    • afxRegApartmentThreading définit le modèle de thread dans le Registre à ThreadingModel=Apartment.

    • afxRegFreeThreading définit le modèle de thread dans le Registre à ThreadingModel=Free.

      Vous pouvez combiner les deux balises afxRegApartmentThreading et afxRegFreeThreading pour définir ThreadingModel=Both.Consultez l' InprocServer32 dans Kit de développement logiciel Windows pour plus d'informations sur l'inscription du modèle de thread.

    [!REMARQUE]

    Dans les versions MFC avant MFC 4,2, le paramètre d' intnRegFlags était un paramètre de BOOL , bInsertable, qui autorise ou refusait le contrôle à insérer de la boîte de dialogue d'objet d'insertion.

  • dwMiscStatus
    Contient un ou plusieurs des indicateurs suivants d'état (pour une description des indicateurs, consultez l'énumération d' OLEMISC dans Kit de développement logiciel Windows) :

    • OLEMISC_RECOMPOSEONRESIZE

    • OLEMISC_ONLYICONIC

    • OLEMISC_INSERTNOTREPLACE

    • OLEMISC_STATIC

    • OLEMISC_CANTLINKINSIDE

    • OLEMISC_CANLINKBYOLE1

    • OLEMISC_ISLINKOBJECT

    • OLEMISC_INSIDEOUT

    • OLEMISC_ACTIVATEWHENVISIBLE

    • OLEMISC_RENDERINGISDEVICEINDEPENDENT

    • OLEMISC_INVISIBLEATRUNTIME

    • OLEMISC_ALWAYSRUN

    • OLEMISC_ACTSLIKEBUTTON

    • OLEMISC_ACTSLIKELABEL

    • OLEMISC_NOUIACTIVATE

    • OLEMISC_ALIGNABLE

    • OLEMISC_IMEMODE

    • OLEMISC_SIMPLEFRAME

    • OLEMISC_SETCLIENTSITEFIRST

  • tlid
    ID unique de la classe de contrôle.

  • wVerMajor
    Numéro de version principale de la classe de contrôle.

  • wVerMinor
    Le numéro de version secondaire de la classe de contrôle.

Valeur de retour

Une valeur différente de zéro si la classe de contrôle a été enregistrée ; sinon 0.

Notes

Cela permet le contrôle à utiliser par les conteneurs qui sont contrôle OLE fuseaux horaires.AfxOleRegisterControlClass met à jour le Registre avec le nom et l'emplacement du contrôle sur le système et définit également le modèle de thread que le contrôle prend en charge dans le Registre.Pour plus d'informations, consultez note technique 64, « threading de modèle appartement dans les contrôles OLE, » et le Sur les processus et les threads dans Kit de développement logiciel Windows.

Exemple

// Member function implementation of class COleObjectFactory::UpdateRegistry 
//
BOOL CMyAxCtrl::CMyAxCtrlFactory::UpdateRegistry(BOOL bRegister)
{
    // TODO: Verify that your control follows apartment-model threading rules.
    // Refer to MFC TechNote 64 for more information.
    // If your control does not conform to the apartment-model rules, then
    // you must modify the code below, changing the 6th parameter from
    // afxRegInsertable | afxRegApartmentThreading to afxRegInsertable.

    if (bRegister)
        return AfxOleRegisterControlClass(
            AfxGetInstanceHandle(),
            m_clsid,
            m_lpszProgID,
            IDS_NVC_MFCAXCTL,
            IDB_NVC_MFCAXCTL,
            afxRegInsertable | afxRegApartmentThreading,
            _dwMyOleMisc,
            _tlid,
            _wVerMajor,
            _wVerMinor);
    else
        return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
}

L'exemple ci-dessus montre comment AfxOleRegisterControlClass est appelé avec l'indicateur pour insérable et la balise pour le modèle cloisonné ORed ensemble pour créer du sixième paramètre :

            afxRegInsertable | afxRegApartmentThreading,

Le contrôle s'affiche dans la boîte de dialogue d'objet d'insertion pour les conteneurs actifs, et ce sera apartment modèle-averti.Les contrôles modèle-avertis d'apartment (cloisonné) doivent garantir que les données de classe statique est protégée par des verrous, afin que bien qu'un contrôle dans un " apartment " accède aux données statiques, il ne soit pas désactivée par le planificateur avant qu'elle ne soit terminée, et une autre instance de les mêmes classe démarre en utilisant les mêmes données statiques.Tous les accès aux données statiques sont entourés par le code de section critique.

Configuration requise

Header:<afxctl.h>

Voir aussi

Référence

AfxOleRegisterPropertyPageClass

AfxOleRegisterTypeLib

AfxOleUnregisterClass

AfxOleUnregisterTypeLib

Concepts

Macro MFC et Globals