Exemplo do INPROC: Demonstra um aplicativo de servidor de automação em processo

O exemplo INPROC é um servidor de automação (anteriormente denominadas automação OLE) no processo.Ao contrário de outras MFC automação servidor Exemplos, INPROC pode ser carregado sistema autônomo uma biblioteca de vínculo dinâmico (DLL) no espaço de endereço do cliente.sistema autônomo servidores em processo são geralmente mais eficientes do que servidores implementados sistema autônomo EXEs separadas porque uma telefonar de procedimento remoto (RPC) não é necessária para chamar métodos em objetos implementados pelo servidor.

Observação:

Alguns exemplos, sistema autônomo esta, não foram modificados para refletir sistema autônomo alterações nos assistentes, bibliotecas e compilador Visual C++, mas ainda Demonstre sistema autônomo concluir a tarefa desejada.

Observação de segurança:

Este código de exemplo é fornecido para ilustrar um conceito e não deve ser usado em aplicativos ou sites da Web, pois ele não pode ilustrar sistema autônomo práticas de codificação mais seguras.Microsoft sistema autônomo sumes nenhuma responsabilidade por danos incidentais ou conseqüenciais deve o código de exemplo ser usado para fins diferentes de sistema autônomo se destina.

Para obter exemplos e instruções para instalá-los:

  • Sobre o Visual Studio Ajuda menu, clicar Exemplos.

    Para obter mais informações, consulte Localizando arquivos de exemplo.

  • A versão mais recente e a lista completa das Exemplos está disponível online a partir de O Visual Studio 2008 Exemplos página.

  • Você também pode localizar exemplos no disco rígido do seu computador.Por padrão, exemplos e um arquivo Leiame são copiados para uma pasta sob \programa Files\Visual Studio 9.0\Samples\.Para edições Express do Visual Studio, todos os exemplos estão localizados online.

Criando e executando o exemplo

Para compilação e executar a amostra INPROC

  1. Abra a solução inproc.sln.

  2. Sobre o Compilação menu, clicar Compilação.

  3. Registrar DLL do INPROC usando o arquivo .reg do projeto, ou seja, ou executar o regedit INPROC.REG, ou use REGSVR das REGSVR amostra.

    Se você usar o REGEDIT, certifique-se de que Inproc.dll está no caminho do sistema.Como alternativa, você pode modificar o arquivo .reg para referir-se ao caminho do Inproc.dll explicitamente.

    Uma DLL não pode ser executada independente, sistema autônomo pode um EXE; portanto, para testar INPROC, você deve "unidade"-lo de um aplicativo cliente.Pode ser acionada INPROC do Visual Basic ou do Visual C++.Consulte o IPDRIVEexemplo de para obter um exemplo de dirigir INPROC do Visual C++.

    Observação:

    Você pode criar uma versão EXE ou uma versão DLL do INPROC.Defina a variante EXE nas configurações de projeto dos exemplos.Uma versão EXE do INPROC somente se registra no registro do Windows.

Classes INPROC

The CVariantMap classe implementa um VARIANTE to VARIANTE map.Isso permite que qualquer VARIANTE ser mapeados para outros VARIANTE.Embora isso provavelmente não seja útil para programadores de Visual C++ (que provavelmente usa CMap diretamente), ele trazer o poder das classes de coleção do MFC para os usuários do Visual Basic. The CVariantMap classe é acessado por nome de mfc.inproc.varmap. Isso é como o objeto está registrado no registro do Windows.CVariantMap implementa sistema autônomo métodos de coleção padrão e propriedades, bem sistema autônomo a _NewEnum método.

The CStringCollect classe implementa uma matriz de seqüências de caracteres.Sua implementação é mais simples do que o CVariantMap classe, mesmo que ele implementa vários recursos de automação mesmo sistema autônomo CVariantMap.The CStringCollect objeto é acessado pelo nome de mfc.inproc.strcoll. Ele implementa a maioria das propriedades e métodos de coleção padrão e é um mercadoria exemplo para obter informações sobre como implementar suas próprias coleções.Interesse particular é sua implementação do _NewEnum método, que permite que os usuários do Visual Basic usar o For Each... In sintaxe ao enumerar o Sumário de uma coleção. CStringCollect uses CEnumVariant para implementar essa funcionalidade (ela implementa IEnumVARIANT usando a interface do MFC mapeia).Você pode encontrar CEnumVariant útil em seus próprios aplicativos.

Finalmente, a amostra implementa algumas propriedades fictícios, que são usadas simplesmente para comparar o desempenho dos servidores em processo e LocalServer servidores.Essas são as propriedades testadas da IPDRIVE botões Test1 e Test2.

Palavras-chave

Este exemplo demonstra as seguintes palavras-chave:

AfxIsValidAddress AfxMessageBox AfxOleInit; AfxOleLockApp; AfxOleUnlockApp; AfxThrowMemoryException; AfxThrowOleException; CCmdTarget::EnableAutomation; CCmdTarget::GetIDispatch; CCmdTarget::OnFinalRelease; CString::AllocSysString; CWinApp::InitInstance; CWinApp::RunAutomated; CWinApp::RunEmbedded; DllCanUnloadNow; DllGetClassObject; min

Consulte também

Outros recursos

Exemplos do MFC