Exemplo do DRAWCLI: Ilustra Integrando suporte contêiner ativo com recursos específicos do aplicativo

O exemplo DRAWCLI é um aplicativo de desenho e orientada a objeto com suporte do contêiner de edição visual.Entre os exemplos de contêiner MFC ativo — contêiner, OCLIENT e DRAWCLI — neste exemplo fornece a melhor ilustração de integração do contêiner ativo suporte com recursos específicos do aplicativo (neste caso, recursos de desenho).Além disso, DRAWCLI demonstra o uso efetivo de polimorfismo C++ no design de sua "forma" e "ferramenta de desenho" classes)CDrawObj e CDrawTool).

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 criar e executar a amostra DRAWCLI

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

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

  3. FROM Depurar diretório, em em aberto e executar o aplicativo DRAWCLI.

Recursos de logotipo do Windows do DRAWCLI

DRAWCLI também ilustra a conformidade de logotipo do Windows.Todos os aplicativos MFC atender a alguns dos requisitos para o logotipo do Windows: um Win32 executável, suporte a nomes de arquivo longos, suporte a nomes de caminho UNC e uso de cores do sistema e métricas.DRAWCLI atende aos requisitos restantes para o logotipo do Windows, incluindo os seguintes recursos.

  • Suporte a ActiveX.DRAWCLI é um contêiner ativo que armazena seus arquivos no formato de arquivo composto, oferece suporte a ativação in-loco e atua sistema autônomo um destino de soltar para operações de do tipo arrastar e soltar.

  • Suporte a MAPI.DRAWCLI fornece uma mensagem de "Enviar sistema autônomo mensagem" no menu Arquivo, permitindo que o usuário enviar um documento sistema autônomo um anexo de email.

  • Conformidade com as diretrizes de shell, incluindo o inscrição dos ícones grandes e pequenos, uso do inscrição do sistema em vez de um arquivo. ini e ter uma configuração e um programa de desinstalar.Para o último DRAWCLI inclui um script compatível com o InstallSHIELD, Kit de ferramentas da Stirling Software para a criação de instalação e desinstalar programas.

DRAWCLI também atende as seguintes recomendações para aplicativos do Windows.

  • Usos com guias de páginas de propriedades.

  • Usa os controles comuns do Windows.

  • Exibe um menu de atalho em resposta a um mouse de botão direito clicar.

  • Armazena informações de resumo com seus documentos.

Interface do usuário do DRAWCLI é semelhantes aos de outros programas de desenho e orientada a objeto.

Integrando suporte contêiner ativo com recursos específicos do aplicativo

O exemplo DRAWCLI foi originalmente autônoma desenho aplicativo desenvolvido usando as classes do MFC.A versão autônoma do DRAWCLI, em seguida, foi integrada a uma segunda versão esqueleto da DRAWCLI criado usando o recurso de contêiner ActiveX do Assistente de aplicativo.Esse processo é semelhante a como o servidor de edição Visual ActiveX adiciona suporte ao servidor à RABISCO.

O design de um aplicativo de contêiner MFC ActiveX deve essencialmente a mesma aparência, independentemente de se você está adicionando funcionalidade ActiveX a um aplicativo MFC (doc/modo de exibição) autônomo existente ou se você está iniciando com um aplicativo assistente–generated aplicativo de contêiner ActiveX.Apresentamos uma breve descrição de como DRAWCLI é separado em código específico do aplicativo e código específicas de contêiner do ActiveX.

  • De classeCDrawObj, implementado Drawobj.cpp, é uma classe base para "forma" classes derivadas. Essa classe base lida com teste ocorrências das formas, movimentação de formas e redimensionamento das formas.Usando o polimorfismo, DRAWCLI pode interagir com objetos de classes diferentes por meio de Do CDrawObj interface.

  • Classes CDrawRect and CDrawPoly derivadas de CDrawObj. CDrawRect é usado para desenhar retângulos, retângulos arredondados, elipses e linhas.CDrawPoly é usado para Desenhar polígonos.Essas duas classes são independentes de funcionalidade de contêiner do ActiveX do DRAWCLI.

  • De classeCDrawOleObj também é derivado de CDrawObje é usado para representar objetos incorporados. CDrawOleObj delega a qualquer operação de ActiveX específicos um contidos CDrawItem objeto (descrito abaixo).Para operações de forma genérica, objetos incorporados são tratados como outros objetos da forma DRAWCLI porque CDrawOleObj é derivado de CDrawObj.

  • De classeCDrawItem, derivado de COleClientItem, lida com todos os o comportamento do ActiveX específicos para o objeto incorporado. A implementação de CDrawItem é semelhante à implementação do COleClientItem-derivadas de classes do contêiner and OCLIENT Exemplos.

  • De classeCDrawDoc é derivado de COleDocument. The COleDocument objeto mantém uma CObList de CDrawObj objetos. CDrawDoc delega a vários comandos de menu específicas do contêiner ActiveX, tais sistema autônomo edição Colar, Colar vínculo, and Links, para a classe base COleDocument.

  • De classeCDrawView é derivado de CScrollView. A implementação de ActiveX específicos de CDrawView é semelhante a implementação das classes da modo de exibição nos exemplos CONTAIN e OCLIENT.A maior parte da interface do usuário de específicos de desenho do DRAWCLI também é implementada em CDrawView.

Palavras-chave

Este exemplo demonstra as seguintes palavras-chave:

AfxGetApp; AfxGetMainWnd; AfxMessageBox; AfxOleInit; AfxRegisterWndClass; AfxThrowMemoryException; CArchive::Close; CArchive::IsStoring; CBitmap::CreateCompatibleBitmap; CBrush::CreateBrushIndirect; CBrush::CreateSolidBrush; CCmdTarget::BeginWaitCursor; CCmdTarget::EndWaitCursor; CCmdUI::Enable; CCmdUI::SetCheck; CCmdUI::SetRadio; CColorDialog::DoModal; CColorDialog::GetColor; CControlBar::EnableDocking; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDC::Attach; CDC::BitBlt; CDC::CreateCompatibleDC; CDC::DPtoLP; CDC::DrawFocusRect; CDC::FillRect; CDC::GetClipBox; CDC::GetDeviceCaps; CDC::HIMETRICtoDP; CDC::IntersectClipRect; CDC::IsPrinting; CDC::LPtoDP; CDC::LineTo; CDC::MoveTo; CDC::OffsetViewportOrg; CDC::OffsetWindowOrg; CDC::PatBlt; CDC::SelectObject; CDC::SetBkColor; CDC::SetBrushOrg; CDC::SetMapMode; CDC::SetViewportExt; CDC::SetViewportOrg; CDC::SetWindowExt; CDC::SetWindowOrg; CDialog::DoModal; CDocTemplate::SetContainerInfo; CDocument::GetFirstViewPosition; CDocument::GetNextView; CDocument::GetTitle; CDocument::OnNewDocument; CDocument::OnOpenDocument; CDocument::OnSaveDocument; CDocument::SetModifiedFlag; CDocument::SetTitle; CDocument::UpdateAllViews; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CFrameWnd::LoadFrame; CFrameWnd::OnCreateClient; CGdiObject::UnrealizeObject; CMDIChildWnd::Create; CMenu::GetSubMenu; CMenu::LoadMenu; CMenu::TrackPopupMenu; CObList::AddTail; CObList::GetCount; CObList::GetHeadPosition; CObList::GetNext; CObList::IsEmpty; CObList::RemoveAll; CObList::RemoveAt; CObject::AssertValid; CObject::Dump; CObject::IsKindOf; CObject::Serialize; COleClientItem::Close; COleClientItem::CreateCloneFrom; COleClientItem::CreateFromData; COleClientItem::CreateStaticFromData; COleClientItem::Deactivate; COleClientItem::Delete; COleClientItem::DoVerb; COleClientItem::Draw; COleClientItem::GetActiveView; COleClientItem::GetClipboardData; COleClientItem::GetDocument; COleClientItem::GetExtent; COleClientItem::GetInPlaceWindow; COleClientItem::GetItemState; COleClientItem::GetType; COleClientItem::IsInPlaceActive; COleClientItem::OnChange; COleClientItem::OnChangeItemPosition; COleClientItem::OnGetItemPosition; COleClientItem::Release; COleClientItem::SetItemRects; COleClientItem::UpdateLink; COleDataObject::AttachClipboard; COleDataObject::GetFileData; COleDataObject::IsDataAvailable; COleDataSource::CacheGlobalData; COleDataSource::SetClipboard; COleInsertDialog::CreateItem; COleInsertDialog::DoModal; COleInsertDialog::GetSelectionType; CPen::CreatePen; CPen::CreatePenIndirect; CPrintDialog::CreatePrinterDC; CRect::BottomRight; CRect::Height; CRect::InflateRect; CRect::IntersectRect; CRect::IsRectEmpty; CRect::NormalizeRect; CRect::OffsetRect; CRect::SetRect; CRect::TopLeft; CRect::Width; CRectTracker::Draw; CRgn::CreateEllipticRgnIndirect; CRgn::CreatePolygonRgn; CRgn::CreateRoundRectRgn; CRgn::RectInRegion; CScrollView::GetDeviceScrollPosition; CScrollView::SetScrollSizes; CStatusBar::Create; CStatusBar::SetIndicators; CString::MakeLower; CToolBar::Create; CView::DoPreparePrinting; CView::GetDocument; CView::IsSelected; CView::OnActivateView; CView::OnBeginPrinting; CView::OnDragEnter; CView::OnDragLeave; CView::OnDragOver; CView::OnDraw; CView::OnDrop; CView::OnEndPrinting; CView::OnInitialUpdate; CView::OnPrepareDC; CView::OnPreparePrinting; CView::OnPrint; CView::OnScrollBy; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::RegisterShellFileTypes; CWinApp::SetRegistryKey; CWnd::DoDataExchange; CWnd::GetCapture; CWnd::GetParentFrame; CWnd::Invalidate; CWnd::InvalidateRect; CWnd::OnCreate; CWnd::OnDestroy; CWnd::OnEraseBkgnd; CWnd::OnLButtonDblClk; CWnd::OnLButtonDown; CWnd::OnLButtonUp; CWnd::OnMouseMove; CWnd::OnSetFocus; CWnd::OnSize; CWnd::PreCreateWindow; CWnd::ScreenToClient; CWnd::SetCapture; CWnd::SetFocus; CWnd::ShowWindow; CWnd::UpdateWindow; DragAcceptFiles; Ellipse; GetACP; GetKeyState; GetMapMode; GetVersion; GlobalFree; GlobalLock; GlobalUnlock; LOWORD; LineTo; LoadCursor; MAKELONG; MoveTo; MulDiv; Polygon; RGB; Rectangle; RegisterClipboardFormat; ReleaseCapture; RoundRect; SelectObject; SetCursor; free; malloc; memcpy; min; realloc; wcstombs

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.

Consulte também

Outros recursos

Exemplos do MFC