Servidores: implementando janelas de quadro in-loco
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 for usar o assistente de aplicativo para criar um aplicativo de servidor. No lugar de seguir o procedimento descrito neste artigo, você pode usar uma classe de janela de quadro in-loco já existente de um aplicativo gerado pelo assistente de aplicativo ou de um exemplo fornecido com o Visual C++.
Para declarar uma classe de janela de quadro in-loco
Derive uma classe de janela de quadro in-loco de
COleIPFrameWnd
.Use a macro DECLARE_DYNCREATE no arquivo de cabeçalho da sua 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 membro
COleResizeBar
na classe de janela de quadro. Isso é necessário se você quiser dar suporte ao redimensionamento in-loco em aplicativos de servidor.Declare um manipulador de mensagens
OnCreate
(usando o Assistente de Classe) e chameCreate
para seu membroCOleResizeBar
, se você o tiver definido.Se você tiver uma barra de ferramentas, declare um membro
CToolBar
na classe de janela de quadro.Substitua a função membro
OnCreateControlBars
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 para essa classe de janela de quadro in-loco no arquivo .cpp principal.
Em
InitInstance
para sua classe de aplicativo, chame a funçãoSetServerInfo
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 instrução if
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 de CToolBar
, ela passará suas mensagens para o proprietário, a janela de quadro do aplicativo de contêiner, a menos que você altere o proprietário. É por isso que a chamada a SetOwner
é necessária. Essa chamada altera a janela em que os comandos são enviados para serem 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 igual aos 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.
Confira também
Servidores
Servidores: implementando um servidor
Servidores: implementando documentos de servidor
Servidores: itens de servidor