다음을 통해 공유


서버: 내부 프레임 창 구현

이 문서에서는 서버 애플리케이션을 만들 때 애플리케이션 마법사를 사용하지 않는 경우, 시각적인 편집 서버 애플리케이션에서 내부 프레임 창을 구현하기 위해 수행해야 하는 작업에 대해 설명합니다. 이 문서에 설명된 절차를 따르는 대신 애플리케이션 마법사에서 생성된 애플리케이션 또는 Visual C++와 함께 제공되는 샘플에서 기존 현재 위치 프레임 창 클래스를 사용할 수 있습니다.

내부 frame-window 클래스를 선언하려면

  1. COleIPFrameWnd에서 내부 frame-window 클래스를 파생합니다.

    • 클래스 헤더 파일에서 DECLARE_DYNCREATE 매크로를 사용합니다.

    • 클래스 구현(.cpp) 파일에서 IMPLEMENT_DYNCREATE 매크로를 사용합니다. 이렇게 하면 프레임워크가 이 클래스의 개체를 만들 수 있습니다.

  2. frame-window 클래스에서 COleResizeBar 멤버를 선언합니다. 이 멤버는 서버 애플리케이션의 내부 크기 조정을 지원하려는 경우에 필요합니다.

    클래스 마법사OnCreate 사용하여 메시지 처리기를 선언하고, 정의한 경우 멤버를 호출 Create 합니다COleResizeBar.

  3. 도구 모음이 있으면 frame-window 클래스에서 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 파일에서 이 내부 frame-window 클래스에 대한 헤더 파일을 포함합니다.

  5. 애플리케이션 클래스에 대한 InitInstance에서 문서 템플릿 개체의 SetServerInfo 함수를 호출하여 열기 및 내부 편집에 사용할 리소스 및 내부 프레임 창을 지정합니다.

문의 일련의 함수 호출 if 은 서버가 제공한 리소스에서 도구 모음을 만듭니다. 이 지점에서 도구 모음은 컨테이너의 창 계층의 일부입니다. 도구 모음이 CToolBar에서 파생되기 때문에 소유자를 변경하지 않는 한, 해당 메시지를 소유자 즉, 컨테이너 애플리케이션의 프레임 창으로 전달합니다. SetOwner 호출이 필요한 이유는 바로 이 때문입니다. 이 호출은 명령이 서버의 내부 프레임 창에 전달되는 창을 변경해서 메시지가 서버에 전달되도록 합니다. 그러면 서버가 제공된 도구 모음에서 작업에 반응할 수 있습니다.

도구 모음 비트맵 ID는 서버 애플리케이션에 정의된 다른 내부 리소스와 동일해야 합니다. 자세한 내용은 메뉴 및 리소스: 서버 추가를 참조하세요.

자세한 내용은 클래스 라이브러리 참조에서 COleIPFrameWnd, COleResizeBarCDocTemplate::SetServerInfo를 참조하세요.

참고 항목

서버
서버: 서버 구현
서버: 서버 문서 구현
서버: 서버 항목