이 문서에서는 애플리케이션 마법사를 사용하여 서버 애플리케이션을 만들지 않는 경우 시각적 편집 서버 애플리케이션에서 현재 위치 프레임 창을 구현하기 위해 수행해야 하는 작업을 설명합니다. 이 문서에 설명된 절차를 따르는 대신 애플리케이션 마법사에서 생성된 애플리케이션 또는 Visual C++와 함께 제공되는 샘플에서 기존 현재 위치 프레임 창 클래스를 사용할 수 있습니다.
현재 위치 프레임 창 클래스를 선언하려면
COleIPFrameWnd
로부터 인플레이스 프레임 윈도우 클래스를 파생합니다.클래스 헤더 파일에서 DECLARE_DYNCREATE 매크로를 사용합니다.
클래스 구현(.cpp) 파일에서 IMPLEMENT_DYNCREATE 매크로를 사용합니다. 이렇게 하면 프레임워크에서 이 클래스의 개체를 만들 수 있습니다.
COleResizeBar
프레임 창 클래스에서 멤버를 선언합니다. 서버 애플리케이션에서 현재 위치 크기 조정을 지원하려면 이 작업이 필요합니다.OnCreate
메시지 처리기를 선언하고 클래스 마법사를 사용하여, 정의한 경우에는Create
멤버에 대해COleResizeBar
를 호출합니다.도구 모음이 있는 경우 프레임 창 클래스에서 멤버를 선언
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단계 다음 코드에 대한 설명을 참조하세요.
기본 .cpp 파일에 이 현재 위치 프레임 창 클래스의 헤더 파일을 포함합니다.
애플리케이션 클래스의
InitInstance
에서, 문서 템플릿 개체의SetServerInfo
함수를 호출하여 열기 및 인플레이스 편집에 사용할 리소스와 인플레이스 프레임 창을 지정합니다.
함수 호출의 일련의 if
구문은 서버가 제공한 리소스를 사용하여 도구 모음을 만듭니다. 이 시점에서 도구 모음은 컨테이너의 창 계층 구조에 속합니다. 이 도구 모음은 CToolBar
에서 파생되었기 때문에 소유자를 변경하지 않는 한, 해당 메시지를 소유자인 컨테이너 애플리케이션의 프레임 창에 전달합니다. 이 때문에 SetOwner
호출이 필요합니다. 이 호출은 명령이 서버의 현재 위치 프레임 창으로 전송되는 창을 변경하여 메시지가 서버에 전달되도록 합니다. 이렇게 하면 서버가 제공하는 도구 모음의 작업에 반응할 수 있습니다.
도구 모음 비트맵의 ID는 서버 애플리케이션에 정의된 다른 현재 위치 리소스와 동일해야 합니다. 자세한 내용은 메뉴 및 리소스: 서버 추가를 참조하세요.
자세한 내용은 클래스 라이브러리 참조에서 COleIPFrameWnd, COleResizeBar 및 CDocTemplate::SetServerInfo를 참조하세요.