Partilhar via


Servidores: Implementando In-Place Frame Windows

Este artigo explica o que deve fazer para implementar janelas de moldura no local na sua aplicação servidor de edição visual caso não utilize o assistente da aplicação para a criar. Em vez de seguir o procedimento delineado neste artigo, pode usar uma classe de janela em quadro "in-place" existente, seja de uma aplicação gerada por um assistente de criação de aplicações ou de um exemplo fornecido com o Visual C++.

Para declarar uma classe de janela de moldura adaptável

  1. Derive uma classe de janela de frame diretamente de COleIPFrameWnd.

    • Use a macro DECLARE_DYNCREATE no arquivo de cabeçalho da classe.

    • Use a macro IMPLEMENT_DYNCREATE em seu arquivo de implementação de classe (.cpp). Isso permite que objetos dessa classe sejam criados pela estrutura.

  2. Declare um COleResizeBar membro na classe frame-window. Isso é necessário se pretender oferecer suporte ao redimensionamento no local em aplicações de servidor.

    Declare um OnCreate manipulador de mensagens (usando o Assistente de classe) e chame Create seu COleResizeBar membro, se você o tiver definido.

  3. Se você tiver uma barra de ferramentas, declare um CToolBar membro na classe frame-window.

    Substitua a OnCreateControlBars função de membro para criar uma barra de ferramentas quando o servidor estiver ativo no local. Por exemplo:

    BOOL CInPlaceFrame::OnCreateControlBars(CFrameWnd* pWndFrame, CFrameWnd* pWndDoc)
    {
       UNREFERENCED_PARAMETER(pWndDoc);
    
       // Set owner to this window, so messages are delivered to correct app
       m_wndToolBar.SetOwner(this);
    
       // Create toolbar on client's frame window
       if (!m_wndToolBar.CreateEx(pWndFrame, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
          | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
          !m_wndToolBar.LoadToolBar(IDR_SRVR_INPLACE))
       {
          TRACE0("Failed to create toolbar\n");
          return FALSE;
       }
    
       // TODO: Delete these three lines if you don't want the toolbar to be dockable
       m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
       pWndFrame->EnableDocking(CBRS_ALIGN_ANY);
       pWndFrame->DockControlBar(&m_wndToolBar);
    
       return TRUE;
    }
    

    Consulte a discussão deste código seguindo a etapa 5.

  4. Inclua o ficheiro de cabeçalho para esta classe de janela de quadro no local no seu ficheiro .cpp principal.

  5. Em InitInstance para sua classe de aplicação, chame a função SetServerInfo do objeto de modelo de documentos para especificar os recursos e a janela de moldura no local a ser usada na edição aberta e no local.

A série de chamadas de função na if instrução cria a barra de ferramentas a partir dos recursos fornecidos pelo servidor. Neste ponto, a barra de ferramentas faz parte da hierarquia de janelas do contêiner. Como esta barra de ferramentas é derivada de CToolBar, ela passará suas mensagens para o seu proprietário, a janela de quadro do aplicativo contêiner, a menos que você altere o proprietário. É por isso que o chamamento para SetOwner é necessário. Essa chamada altera a janela para a qual os comandos são enviados, passando a ser a janela de estrutura imediatamente disponível do servidor, o que faz com que as mensagens sejam enviadas para o servidor. Isso permite que o servidor reaja às operações na barra de ferramentas que ele fornece.

O ID para o bitmap da barra de ferramentas deve ser o mesmo que os outros recursos locais definidos na sua aplicação de servidor. Consulte Menus e recursos: adições de servidor para obter detalhes.

Para obter mais informações, consulte COleIPFrameWnd, COleResizeBar e CDocTemplate::SetServerInfo na Referência da Biblioteca de Classes.

Ver também

Servidores
Servidores: Implementando um servidor
Servidores: Implementando documentos do servidor
Servidores: Itens de servidor