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
Abra a solução arquivo atltangram.sln.
From a Compilação menu, clicar Criar solução.
From a Depurar menu, clicar Iniciar sem depuração.
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.
No menu Project, clique em Properties.
selecionar a solução Atltangram no gerenciador de soluções.
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.
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. |