Exemplo do ATLTangram atributos: Demonstra Gerenciando projetos grandes que usam ATL e MFC COM

ATLTangram é uma porta do exemplo Tangram encontrado no último capítulo COM interior (http://mspress.microsoft.com).Muitas graças à Dale para fazer o trabalho árduo e permitindo-nos usar o código em um exemplo ATL.Este exemplo ajudará você a converter um legado aplicativo COM a uma que usa ATL para sua infra-estrutura.

ATLTangram é um grande projeto consiste na solução ATLTangram, que é o controlador de mestre de seis subprojetos: MFCTangram, ATLModel, ATLGdiWorld, ATLGLWorld, ATLModelExe e ATLTangramCanvas.O exemplo demonstra vários recursos do ambiente de desenvolvimento integrado (IDE) e COM vários conceitos.O exemplo também demonstra o uso de MFC sistema autônomo o cliente de servidores ATL COM.

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 esse exemplo

  1. Abra a solução arquivo atltangram.sln.

  2. From a Compilação menu, clicar Criar solução.

  3. From a Depurar menu, clicar Iniciar sem depuração.

  4. Uma caixa de diálogo será exibida: selecionar uma das opções.O programa Tangram começará.

Gerenciando um grande projeto

A solução estabeleceu as interdependências no IDE.Essas interdependências trabalhar com a estrutura de diretório padrão para a amostra e são relativos a caminho.

A hierarquia de dependência mais ou menos esta aparência:

MFCTangram
   ATLGLWorld
      ATLGdiWorld
         ATLTangramCanvas
            ATLModel
   ATLModelExe
      ATLModel
      ATLModel

Todas as configurações de projeto já são estabelecidas para a amostra.Siga estas etapas para examinar as interdependências do projeto.

  1. No menu Project, clique em Properties.

  2. selecionar a solução Atltangram no gerenciador de soluções.

  3. No Páginas de propriedades diálogo caixa, expandir o Propriedades comuns pasta e selecionar Depurar arquivos de fonte.Examine o Pesquisar esses caminhos para arquivos de fonte box.

  4. clicar Dependências de projeto e examine os nomes de projeto dependente.

sistema autônomo projetos ATLModel e ATLModelExe demonstram sistema autônomo configurar um servidor COM para construí-lo sistema autônomo um servidor em proc ou um servidor local usando o mesmo conjunto de arquivos e arquivos de projeto dois.Usando dois arquivos de projeto permite que dependências por existir na DLL e EXE.

Recursos COM/ATL

Este exemplo é um sistema COM que consiste em vários servidores COM e um aplicativo do MFC usa os servidores.O exemplo exibe a comunicação intermodule via o mecanismo de ponto de conexão e demonstra servidores locais e em proc.

Outros demonstradas recursos

  • Os servidores de ATL usam o Standard modelo biblioteca para coleções.

  • O driver do MFC usa classes de modelo do MFC.

  • O driver do MFC, um exemplo de um aplicativo não-documento/view, usa uma classe derivada de CFrameWnd sistema autônomo a janela de saída para o desenho partes Tangram.

Atributos

Este exemplo usa os seguintes atributos:

  • ATLTANGRAM exportar helpstring, objeto, pointer_default, uuid

  • ATLTANGRAM/atlgdiworld coclass, com_interface_entry, padrão, dll, event_receiver, helpstring, iid_is, implements_category in, módulo, o nome, o objeto, saída, pointer_default, progid, registration_script, size_is, exclusivo, o uuid, versão, vi_progid

  • ATLTANGRAM/atlglworld coclass, com_interface_entry, padrão, dll, event_receiver, helpstring, implements_category in, módulo, o nome, o objeto, saída, pointer_default, progid, registration_script, uuid, vi_progid

  • ATLTANGRAM/atlmodel coclass, padrão, dll, event_source, exe, helpstring in, módulo, o nome, o objeto, out pointer_default, progid, size_is, uuid

  • ATLTANGRAM/atltangramcanvas coclass, padrão, dll, helpstring in, módulo, o nome, o objeto, out pointer_default, progid, registration_script uuid, vi_progid

Classes e palavras-chave

O exemplo utiliza as seguintes classes ATL:

CComObjectRootEx, CComCoClass, CComControl, IDispatchImpl, IProvideClassInfo2Impl, IPersistStreamInitImpl, IPersistStorageImpl, IPersistPropertyBagImpl, IPerPropertyBrowsingImpl, IQuickActivateImpl, IObjectSafetyImpl, IOleControlImpl, IOleObjectImpl, IOleInPlaceActiveObjectImpl, IViewObjectExImpl, IOleInPlaceObjectWindowlessImpl, IDataObjectImpl, ISupportErrorInfo, ISpecifyPropertyPagesImpl, IConnectionPointContainerImpl, IPropertyNotifySinkCP, CDialogImpl

O exemplo utiliza as seguintes classes MFC:

CFrameWnd, <>CTypedPtrList, CDialog, CWinApp e classes de suporte adicionais

Este exemplo utiliza as seguintes palavras-chave:

_ASSERTE; AddRef; AddUpdateRect; Advise; assert; ASSERT; ATLTRACE; auxSolidSphere; BEGIN_COM_MAP; BEGIN_CONNECTION_POINT_MAP; BEGIN_MESSAGE_MAP; BEGIN_OBJECT_MAP; BitBlt; CATEGORYINFO ; CComCoClass; CComModule::GetClassObject; CComModule::GetLockCount; CComModule::Init; CComModule::RegisterServer; CComModule::Term; CComModule::UnregisterServer; CComObjectRootEx; CExeModule::Init; CExeModule::RegisterClassObjects; CExeModule::RegisterServer; CExeModule::RevokeClassObjects; CExeModule::UnregisterServer; CExeModule::UpdateRegistryFromResource; CFrameWnd::AssertValid; CFrameWnd::Dump; CFrameWnd::PreCreateWindow; ChoosePixelFormat; CModelList; CoCreateInstance; CoInitializeEx; COM_INTERFACE_ENTRY; COM_INTERFACE_ENTRY_AGGREGATE; COM_INTERFACE_ENTRY_IMPL; CONNECTION_POINT_ENTRY; CopyRect; CoTaskMemFree; CProxyIATLTangramModelEvent; CreateCompatibleDC; CreatePalette; CWnd::CreateEx; DECLARE_GET_CONTROLLING_UNKNOWN; DECLARE_MESSAGE_MAP; DECLARE_ONLY_AGGREGATABLE; DECLARE_REGISTRY_RESOURCEID; DeleteObject; DescribePixelFormat; DisableThreadLibraryCalls; DispatchMessage; DoButtonDown; DoModal; END_COM_MAP; END_CONNECTION_POINT_MAP; END_MESSAGE_MAP; END_OBJECT_MAP; EqualRect; ErrorMessage; GdiFlush; GetBoundingRect; GetClientRect; GetCommandLine; GetControllingUnknown; GetDC; GetMessage; GetModuleFileName; GetObject; GetPalette; GetPaletteEntries; GetPixelFormat; GetRotation; GetVertices; glBegin; glClearColor; GLdouble CoCreateInstance; glEnable; glEnd; glFlush; glGetIntegerv; glInitNames; glLightfv; glLightModelfv; glLoadIdentity; glMatrixMode; glNormal3d; glPolygonMode; glPopMatrix; glPopName; glPushMatrix; glPushName; GLRender; glRenderMode; GLResize; glRotated; glSelectBuffer; GLSetup; glTranslated; glTranslatef; gluPerspective; gluPickMatrix; gluUnProject; glVertex2d; glVertex3d; glViewport; HPALETTE; ICatInformation::EnumClassesOfCategories; ICatRegister::QueryInterface; ICatRegister::RegisterCategories; ICatRegister::RegisterClassImplCategories; ICatRegister::UnRegisterCategories; ICatRegister::UnRegisterClassImplCategories; IConnectionPointContainer::FindConnectionPoint; IConnectionPointContainer::Release; IConnectionPointContainerImpl; InitInstance; InvalidateRect; IsCurrent; IsValidAddress; IUnknown::Release; LoadIcon; LoadStandardCursor; LocalFree; MakeCurrent; OBJECT_ENTRY; ON_COMMAND; ON_WM_DESTROY ; OnCancel; OnDestroy; OnInitDialog; OnOK; OnQueryNewPalette; OutputDebugString; OutputGlError; Polygon; PreCreateWindow; PtInRegion; QueryInterface; RealizePalette; Release; ReleaseConnectionPoint; ReleaseDC; Rotate; SelectObject; SelectPalette; SetPixelFormat; SetRectEmpty; specifyMaterial; StringFromCLSID; SubkeyExists; va_end; wcscpy_s; wglCreateContext; wglGetCurrentContext; wglMakeCurrent

Observação:

Alguns dos 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.

Consulte também

Outros recursos

Exemplos de atributos do ATL