Поделиться через


Серверы. Реализация окон фрейма на месте

В этой статье описывается, что необходимо сделать для реализации фреймового окна для встроенного редактирования в вашем визуального редактирования серверном приложении при отсутствии мастера приложений для создания, серверное приложение. Вместо применения процедуры законспектированной в этой статье, можно использовать существующий класс фреймового окна для встроенного редактирования из приложения или приложения, созданного мастером или примера, передаваемых с Visual C++.

Чтобы объявить класс фреймового окна для встроенного редактирования

  1. Унаследуйте класс фреймового окна для встроенного редактирования из COleIPFrameWnd.

    • Используйте макрос DECLARE_DYNCREATE в файле заголовка класса.

    • Используйте макрос IMPLEMENT_DYNCREATE в файле реализации класса (CPP). Это позволяет объектам данного класса, который будет создание платформы.

  2. Объявите член COleResizeBar в классе фреймового окна. Это необходимо, если требуется поддерживать на месте изменения в серверных приложениях.

    Объявите обработчик сообщений OnCreate (с помощью окна Свойства ) и вызовите Создать для данного элемента COleResizeBar, если определены его.

  3. Если имеется инструмент, объявите член CToolBar в классе фреймового окна.

    Переопределить функцию-член OnCreateControlBars для создания панель инструментов, когда сервер запущен на месте. Примеры.

    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;
    }
    

    См. описание этого кода из шага 5.

  4. Включите файл заголовка для этого класса фреймового окна для встроенного редактирования в основном cpp-файле.

  5. В InitInstance класса приложения, вызовите функцию SetServerInfo объекта шаблона документа для идентификации ресурсов и окно фрейма для встроенного редактирования, который должен использоваться в открытом и редактировании локально.

Последовательность вызовов функций в инструкцию if создает инструмент из ресурсов сервера приложений. На этом этапе, панель инструментов часть иерархией окон контейнера. Поскольку этот инструмент является производным от CToolBar, он отправляет его сообщения с его владельцу, фреймовому окно приложения, если не были изменены dbo. Поэтому вызов SetOwner. Этот вызов изменяет окно, в котором отправляются команды быть окном для редактирования фрейма встроенного сервера, вызывая сообщений передавать на сервер. Это позволяет сервер, чтобы реагировать на операциям на панели инструментов, он предоставляет.

Идентификатор для растрового изображения " должно быть таким же, как и другие ресурсы, определенные на месте в серверном приложении. Дополнительные сведения см. в разделе Меню и ресурсы: Добавление сервера.

Дополнительные сведения см. в разделах COleIPFrameWnd, COleResizeBar и CDocTemplate::SetServerInfo справочника по библиотеке классов.

См. также

Основные понятия

Серверы

Серверы. Реализация сервера

Серверы. Реализация документов сервера

Серверы. Элементы сервера