Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo explica o que você deve fazer para implementar janelas de quadro in-loco em seu aplicativo de servidor de edição visual se você não usar o assistente de aplicativo para criar seu aplicativo de servidor. Em vez de seguir o procedimento descrito neste artigo, você pode usar uma classe de janela de quadro existente no local de um aplicativo gerado pelo assistente de aplicativo ou um exemplo fornecido com o Visual C++.
Para declarar uma classe de janela de quadro in-loco
Derivar uma classe de janela de quadro in-loco de
COleIPFrameWnd.Use a macro DECLARE_DYNCREATE no arquivo de cabeçalho de classe.
Use a macro IMPLEMENT_DYNCREATE no arquivo de implementação de classe (.cpp). Isso permite que objetos dessa classe sejam criados pela estrutura.
Declare um
COleResizeBarmembro na classe de janela de quadros. Isso é necessário se você quiser dar suporte ao redimensionamento in-loco em aplicativos de servidor.Declare um
OnCreatemanipulador de mensagens (usando o Assistente de Classe) e chameCreateseuCOleResizeBarmembro, se você o tiver definido.Se você tiver uma barra de ferramentas, declare um
CToolBarmembro na classe de janela de quadros.Substitua a
OnCreateControlBarsfunção 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 após a etapa 5.
Inclua o arquivo de cabeçalho dessa classe de janela de quadro in-loco em seu arquivo de .cpp principal.
Para
InitInstancesua classe de aplicativo, chame aSetServerInfofunção do objeto de modelo de documento para especificar os recursos e a janela de quadro in-loco a serem usados na edição aberta e in-loco.
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 essa barra de ferramentas é derivada, CToolBarela passará suas mensagens para seu proprietário, a janela de quadro do aplicativo de contêiner, a menos que você altere o proprietário. É por isso que a chamada é SetOwner necessária. Essa chamada altera a janela em que os comandos são enviados para ser a janela de quadro in-loco do servidor, fazendo com que as mensagens sejam passadas para o servidor. Isso permite que o servidor reaja às operações na barra de ferramentas que ele fornece.
A ID do bitmap da barra de ferramentas deve ser a mesma dos outros recursos in-loco definidos em seu aplicativo 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.
Consulte também
Servidores
Servidores: Implementando um servidor
Servidores: Implementando documentos do servidor
Servidores: Itens do Servidor