서버: 내부 프레임 창 구현
이 문서에서는 서버 응용 프로그램을 만드는 응용 프로그램 마법사를 사용 하지 않는 경우, 비주얼 편집 서버 응용 프로그램에서 내부 프레임 창을 구현 하려면 무엇을 해야 하는지 설명합니다. 이 문서에 설명 된 절차를 따르는 대신 응용 프로그램 마법사가 생성 한 응용 프로그램이나 Visual C++과 함께 제공 된 샘플에서 기존 내부 프레임 창 클래스를 사용할 수 있습니다.
내부 프레임 창 클래스를 선언 하려면
COleIPFrameWnd 에서 내부 프레임 창 클래스를 파생합니다.
클래스 헤더 파일에서 DECLARE_DYNCREATE 매크로를 사용하십시오.
클래스 구현 파일(.cpp) 에서 IMPLEMENT_DYNCREATE 매크로를 사용하십시오. 이렇게 하면 이 클래스의 개체가 프레임에 의해 만들어 질 수 있도록 허용합니다.
내부 프레임 창 클래스에 COleResizeBar 멤버를 선언하십시오. 이 서버 응용 프로그램의 내부 크기를 지원 하려면 이것이 필요합니다.
OnCreate 메세지 처리기를(Properties 창을 사용하여) 선언하고 선언이 된 경우, COleResizeBar 멤버에 대해 Create 를 호출하십시오.
도구 모음을 가지고 있는 경우, 내부 프레임 창 클래스에 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는 서버 응용 프로그램에 정의 된 다른 위치에서 리소스와 동일 해야 합니다. 자세한 내용은 Menus and Resources: Server Additions 를 참조하십시오.
자세한 내용은 Class Library Reference 의 COleIPFrameWnd, COleResizeBar, 및 CDocTemplate::SetServerInfo 를 참조하십시오.