AfxOleRegisterControlClass

Registra a classe de controle com o banco de dados de registro do Windows.

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

Parâmetros

  • hInstance
    O identificador de instância do módulo associado com a classe de controle.

  • clsid
    Identificação exclusiva de classe do controle.

  • pszProgID
    A identificação de programa exclusivo do controle.

  • idTypeName
    A identificação de recurso de cadeia de caracteres que contém um nome de tipo de usuário-legível para o controle.

  • idBitmap
    A identificação de recurso do bitmap usado para representar o controle OLE em uma barra de ferramentas ou paleta.

  • nRegFlags
    Contém um ou mais dos sinalizadores a seguir:

    • afxRegInsertablePermite que o controle apareça na caixa de diálogo Inserir objeto para objetos OLE.

    • afxRegApartmentThreadingDefine o modelo de segmentação no registro para ThreadingModel = Apartment.

    • afxRegFreeThreadingDefine o modelo de segmentação no registro para ThreadingModel = livre.

      Você pode combinar dois sinalizadores afxRegApartmentThreading e afxRegFreeThreading para definir a ThreadingModel = ambos.Consulte InprocServer32 na Windows SDK para obter mais informações sobre registro de modelo de threading.

    ObservaçãoObservação

    Nas versões do MFC antes MFC 4.2, o intnRegFlags parâmetro foi um BOOL parâmetro, bInsertable, que permitido ou proibido o controle a ser inserido na caixa de diálogo Inserir objeto.

  • dwMiscStatus
    Contém um ou mais dos seguintes sinalizadores de status (para uma descrição dos sinalizadores, consulte OLEMISC enumeração na Windows SDK):

    • 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
    A identificação exclusiva da classe control.

  • wVerMajor
    O número de versão principal da classe control.

  • wVerMinor
    O número de versão secundária da classe control.

Valor de retorno

Diferente de zero se a classe de controle foi registrada; Caso contrário, 0.

Comentários

Isso permite que o controle a ser usado por recipientes estão ciente de controle OLE.AfxOleRegisterControlClassatualiza o registro com nome e local do sistema de controle e também define o modelo de threading suporta o controle no registro.Para obter mais informações, consulte técnico 64 anotação, "Modelo Apartment Threading no OLE controles", e sobre processos e Threads na Windows SDK.

Exemplo

// 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);
}

O exemplo acima demonstra como AfxOleRegisterControlClass é chamado com o sinalizador para inseríveis e o sinalizador de apartamento ORed juntos para criar o sexto parâmetro de modelo:

            afxRegInsertable | afxRegApartmentThreading,

O controle será exibido na caixa de diálogo Inserir objeto para recipientes habilitados e ele estará ciente de modelo de apartment.Controles cientes de modelo de apartment devem garantir que dados são protegidos por bloqueios, de classe estática para que enquanto um controle em um apartamento estiver acessando dados estáticos, ele não é desativado pelo Agendador antes de terminar e outra instância da mesma classe inicia usando os mesmos dados estáticos.Os acessos aos dados estáticos são envolvidos por código de seção crítica.

Requisitos

Cabeçalho: <afxctl.h>

Consulte também

Referência

AfxOleRegisterPropertyPageClass

AfxOleRegisterTypeLib

AfxOleUnregisterClass

AfxOleUnregisterTypeLib

Conceitos

Globais e Macros do MFC