AfxOleRegisterControlClass
Registra a classe de controle com o banco de dados de inscrição 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 do módulo associado com a classe de controle.clsid
ID exclusiva de classe do controle.pszProgID
ID exclusiva do programa do controle.idTypeName
A ID de recurso da seqüência de caracteres que contém um nome de tipo pode ser entendido pelo usuário para o controle.idBitmap
A ID de recurso do bitmap usado para representar a em uma barra de ferramentas ou a paleta de controle OLE.nRegFlags
Contém um ou mais dos sinalizadores a seguir:afxRegInsertable Permite que o controle apareça na caixa de diálogo Inserir objeto para objetos OLE.
afxRegApartmentThreading Define o modelo de threading no registro para ThreadingModel = Apartment.
afxRegFreeThreading Define o modelo de threading no registro para ThreadingModel = disponível.
Você pode agrupar os dois sinalizadores afxRegApartmentThreading e afxRegFreeThreading Para conjunto ThreadingModel = ambos. See InprocServer32 in the Windows SDK Para obter mais informações sobre inscrição de modelo de threading.
Observação: Nas versões do MFC antes 4.2 MFC, o int nRegFlags parameter was a BOOL parameter, bInsertable, that allowed or disallowed the control to be inserted from the Insert Object dialog box.
dwMiscStatus
Contém um ou mais dos seguintes sinalizadores de status (para obter uma descrição dos sinalizadores, consulte OLEMISC enumeração no 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 ID exclusiva da classe de controle.wVerMajor
O número da versão primária da classe de controle.wVerMinor
O número de versão secundária da classe de controle.
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 que estão ciente de controle OLE.AfxOleRegisterControlClass atualiza o registro com nome e local no sistema do controle e também define o modelo de segmentação permite o controle no registro. Para obter mais informações, consulte Observação técnica 64, "Apartment Threading em controles de OLE modelo" e Sobre processos e threads in the 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 sinalizar para inseríveis e o sinalizar de apartment 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 ativados e será compatível com o modelo apartment.Controles com reconhecimento de modelo de apartment devem garantir que dados são protegidos por bloqueios, de classe estática para que enquanto um controle em um compartimento estiver acessando dados estático, ele não estiver desabilitado pelo Agendador antes que termina e outra instância da mesma classe inicia usando os mesmos dados estático.Os acessos aos dados estático são envolvidos por código de seção crítica.
Requisitos
Cabeçalho:<afxctl.h>