TN025: 문서, 뷰 및 프레임 만들기

이 노트는 WinApps, DocTemplates, 문서, 프레임 및 보기에 대 한 생성 및 소유권 문제를 설명합니다. Visual c + + 프로그래머 가이드 에서 대부분의이 정보 및 기타 흥미로운 생성 및 소유권 문제를 찾을 수 있습니다.

WinApp

시스템에 하나의 CWinApp 개체。

그것은 정적으로 구성 하 고 WinMain의 프레임 워크의 내부 구현으로 초기화. 아무것도 유용 할 CWinApp 에서 파생 해야 합니다 (예외: 확장 Dll에 있는 CWinApp 인스턴스 말았어야 ? 초기화 DllMain 에서 대신 수행 됩니다)。

한 CWinApp 개체 목록을 문서 서식 파일 ( CPtrList)를 소유합니다. 응용 프로그램 당 하나 이상의 문서 서식 파일이입니다. Doctemplates는 일반적으로 CWinApp::InitInstance 에서 리소스 파일 (문자열 배열)에서 로드。

pTemplate = 새로운 CDocTemplate (IDR_MYDOCUMENT,...);
AddDocTemplate(pTemplate)

한 CWinApp 개체는 응용 프로그램에 있는 모든 프레임 창이 소유합니다. 응용 프로그램의 주 프레임 창은 CWinApp::m_pMainWnd;에 저장 되어야 합니다. 일반적으로 m_pMainWnd 에서 설정한 InitInstance 구현 AppWizard 당신을 위해 그것을 할 수 없습니다가 하는 경우. 단일 문서 인터페이스 (SDI)이 한 CFrameWnd 유일한 문서 프레임 창 뿐만 아니라 기본 응용 프로그램 프레임 창의 역할입니다. 다중 문서 인터페이스 (MDI)는 MDI 프레임 ( CMDIFrameWnd클래스)는 모든 자식 CFrameWnds를 포함 하는 주 응용 프로그램 프레임 창입니다. 각 자식 창 클래스 CMDIChildWnd ( CFrameWnd에서 파생) 이며 잠재적으로 많은 문서 프레임 창 중 하나로 역。

DocTemplates

CDocTemplate 작성자의 문서 관리자입니다. 그것은 만드는 문서 소유 합니다. 경우에 응용 프로그램에 아래 설명 된 리소스 기반 방법을 사용 하 여, 그것은 필요 하지 않습니다 CDocTemplate 에서 파생。

SDI 응용 프로그램에 대 한 클래스는 CSingleDocTemplate 하나의 열린 문서의 추적. MDI 응용 프로그램에 대 한 CMultiDocTemplate 클래스는 현재 열려 있는 모든 문서는 서식 파일에서 만든의 목록 ( CPtrList)을 유지 합니다. CDocTemplate::AddDocument 및 CDocTemplate::RemoveDocument 가상 멤버를 추가 하거나 서식 파일에서 문서를 제거 기능을 제공 합니다. CDocTemplate CDocument 친구 이므로 우리가 문서를 작성 하는 문서 서식 파일에 다시 가리키도록 보호 CDocument::m_pDocTemplate 다시 포인터를 설정할 수 있습니다.

CWinApp 모든 문서 서식 파일에 쿼리 하는 기본 OnFileOpen 구현을 처리 합니다. 이미 열려 있는 문서에 대 한 보고 하 고 새 문서를 열려면 형식을 결정을 포함 하는 구현。

CDocTemplate 관리 문서 및 프레임에 대 한 UI 바인딩。

CDocTemplate 명명 되지 않은 문서 수의 카운트를 유지。

CDocument

CDocument CDocTemplate 에 의해 소유 하 고。

문서는 문서 ( CPtrList) 보고 ( CView에서 파생) 현재 열려 있는 보기 목록。

문서 할 생성/파괴 하지 플레이, 하지만 그들은 만들어진 후 서로 연결 되어 있습니다. 문서를 닫을 때 (즉, 통해 파일/닫기), 모든 연결 된 뷰를 닫힙니다. 문서를 닫을 것 이다 (즉, 창/닫기) 문서에서 마지막 보기를 닫을 때。

CDocument::AddView, RemoveView 인터페이스는 목록 보기를 유지 하는 데 사용 됩니다. CDocument CView 친구 이므로 우리 CView::m_pDocument 다시 포인터를 설정할 수 있습니다.

CFrameWnd

CFrameWnd (프레임) MFC 1.0에서와 같은 역할을 한다 하지만 지금은 CFrameWnd 클래스 새 클래스를 파생 하지 않고 많은 경우에 사용 하도록 설계 되었습니다. 그래서 많은 표준 명령 이미 구현 CMDIFrameWnd 및 CMDIChildWnd 파생된 클래스도 향상 됩니다.

CFrameWnd 프레임의 클라이언트 영역에 창을 만드는 일을 담당 합니다. 일반적으로 거기에 한 창 프레임의 클라이언트 영역을 채우는。

MDI 프레임 창의 클라이언트 영역 차례로 모든 MDI 자식 프레임 창의 부모는 MDICLIENT 제어 채워집니다. SDI 프레임 창이 나 MDI 자식 프레임 창에 대 한 클라이언트 영역 일반적으로 가득 CView-window 개체를 파생 합니다. CSplitterWnd의 경우 보기의 클라이언트 영역 CSplitterWnd window 개체와 CView가득-파생된 window 개체 (하나의 분할 창 당) CSplitterWnd 의 자식 창으로 만들어집니다。

기술 노트 번호로 |nbsp; 카테고리별 기술 노트(&N)

Index