Controles de ActiveX MFC: Distribuindo os controles ActiveX

Este artigo descreve várias questões relacionadas a redistribuindo controles ActiveX:

  • Versões de controle Unicode ou ANSI

  • Instalar os controles ActiveX e DLLs redistribuíveis

  • Registrar controles

    ObservaçãoObservação

    Para obter informações adicionais sobre redistribuindo controles ActiveX, consulte Redistribuindo controles.

Versões de controle Unicode ou ANSI

Você deve decidir se entregar uma versão ANSI ou Unicode do controle, ou ambos.Essa decisão se baseia em fatores de portabilidade inerentes em conjuntos de caracteres ANSI e Unicode.

Controles de ANSI, que funcionam em todos os sistemas operacionais Win32, permitem máxima portabilidade entre vários sistemas operacionais Win32.Unicode controles funcionam em apenas Windows NT (versão 3.51 ou posterior), mas não no Windows 95 ou Windows 98.Se portabilidade é sua principal preocupação, controles de ANSI de remessa.Se os controles serão executados somente em Windows NT, você pode remeter controles Unicode.Você também pode escolher enviar ambos e que seu aplicativo para instalar a versão mais apropriada para o sistema operacional do usuário.

Instalar os controles ActiveX e DLLs redistribuíveis

O programa de instalação que você fornecer seus controles de ActiveX deve criar um subdiretório especial do diretório do Windows e instalar os controles.OCX arquivos.

ObservaçãoObservação

Use o Windows GetWindowsDirectory API no seu programa de instalação para obter o nome do diretório do Windows.Convém derivar o nome de subdiretório do nome da sua empresa ou produto.

O programa de instalação deve instalar os arquivos DLL redistribuíveis necessários no diretório de sistema do Windows.Se qualquer uma das DLLs já estão presentes na máquina do usuário, o programa de instalação deve comparar suas versões com as versões que você está instalando.Reinstale um arquivo somente se o seu número de versão é maior que o arquivo já instalado.

Como controles de ActiveX podem ser usados somente em aplicativos de contêiner OLE, não é necessário distribuir o conjunto completo de DLLs OLE com seus controles.Você pode assumir que o aplicativo que o contém (ou o próprio sistema operacional) tem o padrão OLE DLLs instalado.

Registrar controles

Antes de um controle pode ser usado, as entradas apropriadas devem ser criadas para ele no banco de dados de registro do Windows.Alguns recipientes de controle ActiveX fornecem um item de menu os usuários se registrem novos controles, mas esse recurso pode não estar disponível em todos os recipientes.Portanto, convém seu programa de instalação para registrar os controles quando estiverem instalados.

Se preferir, você pode escrever seu programa de instalação para registrar o controle diretamente.

Use o LoadLibrary API do Windows para carregar a DLL de controle.Em seguida, use GetProcAddress para obter o endereço da função "DllRegisterServer".Finalmente, chamar o DllRegisterServer função.O exemplo de código a seguir demonstra um método possível, onde hLib armazena o identificador de biblioteca de controle, e lpDllEntryPoint armazena o endereço da função "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

A vantagem de registrar o controle diretamente é que você não precisará chamar e carregar um processo separado (ou seja, REGSVR32), reduzindo o tempo de instalação.Além disso, porque o registro é um processo interno, o programa de instalação pode manipular erros e podem melhores do que um processo externo de situações imprevistas.

ObservaçãoObservação

Antes do programa de instalação instala um controle ActiveX, ela deve chamar OleInitialize.Quando o programa de instalação for concluído, chamada OleUnitialize.Isso garante que o sistema OLE DLLs estão no estado adequado para registrar um controle ActiveX.

Você deve registrar MFCx0.DLL.

Consulte também

Conceitos

Controles de ActiveX do MFC