CView
수업
사용자 정의 뷰 클래스에 대한 기본 기능을 제공합니다.
구문
class AFX_NOVTABLE CView : public CWnd
멤버
보호된 생성자
속성 | 설명 |
---|---|
CView::CView |
CView 개체를 생성합니다. |
공용 메서드
이름 | 설명 |
---|---|
CView::DoPreparePrinting |
인쇄 대화 상자를 표시하고 프린터 디바이스 컨텍스트를 만듭니다. 멤버 함수를 재정의할 때 호출합니다 OnPreparePrinting . |
CView::GetDocument |
뷰와 연결된 문서를 반환합니다. |
CView::IsSelected |
문서 항목이 선택되었는지 여부를 테스트합니다. OLE 지원에 필요합니다. |
CView::OnDragEnter |
항목이 뷰의 끌어서 놓기 영역으로 처음 끌 때 호출됩니다. |
CView::OnDragLeave |
끌어온 항목이 보기의 끌어서 놓기 영역을 떠날 때 호출됩니다. |
CView::OnDragOver |
항목이 보기의 끌어서 놓기 영역 위로 끌 때 호출됩니다. |
CView::OnDragScroll |
커서를 창의 스크롤 영역으로 끌지 여부를 확인하기 위해 호출됩니다. |
CView::OnDrop |
항목이 뷰의 끌어서 놓기 영역인 기본 처리기에 떨어졌을 때 호출됩니다. |
CView::OnDropEx |
항목이 뷰의 끌어서 놓기 영역인 기본 처리기에 떨어졌을 때 호출됩니다. |
CView::OnInitialUpdate |
뷰가 문서에 처음 첨부된 후 호출됩니다. |
CView::OnPrepareDC |
화면 표시를 OnDraw 위해 멤버 함수가 호출되거나 인쇄 또는 OnPrint 인쇄 미리 보기를 위해 멤버 함수가 호출되기 전에 호출됩니다. |
CView::OnScroll |
OLE 항목이 보기의 테두리를 넘어 끌 때 호출됩니다. |
CView::OnScrollBy |
현재 위치 OLE 항목이 포함된 뷰를 스크롤할 때 호출됩니다. |
보호된 메서드
속성 | 설명 |
---|---|
CView::OnActivateFrame |
뷰가 포함된 프레임 창이 활성화되거나 비활성화될 때 호출됩니다. |
CView::OnActivateView |
뷰가 활성화될 때 호출됩니다. |
CView::OnBeginPrinting |
인쇄 작업이 시작될 때 호출됩니다. GDI(그래픽 디바이스 인터페이스) 리소스를 할당하도록 재정의합니다. |
CView::OnDraw |
화면 표시, 인쇄 또는 인쇄 미리 보기를 위해 문서의 이미지를 렌더링하기 위해 호출됩니다. 구현이 필요합니다. |
CView::OnEndPrinting |
인쇄 작업이 종료되면 호출됩니다. 재정의하여 GDI 리소스 할당을 취소합니다. |
CView::OnEndPrintPreview |
미리 보기 모드가 종료될 때 호출됩니다. |
CView::OnPreparePrinting |
문서를 인쇄하거나 미리 보기 전에 호출합니다. [인쇄] 대화 상자를 초기화하려면 재정의합니다. |
CView::OnPrint |
문서 페이지를 인쇄하거나 미리 보기 위해 호출됩니다. |
CView::OnUpdate |
문서가 수정되었음을 보기에 알리기 위해 호출됩니다. |
설명
보기는 문서에 첨부되고 문서와 사용자 간의 중개자 역할을 합니다. 보기는 화면이나 프린터에서 문서의 이미지를 렌더링하고 사용자 입력을 문서에 대한 작업으로 해석합니다.
보기는 프레임 창의 자식입니다. 분할자 창의 경우와 같이 둘 이상의 보기가 프레임 창을 공유할 수 있습니다. 뷰 클래스, 프레임 창 클래스 및 문서 클래스 간의 관계는 개체에 의해 CDocTemplate
설정됩니다. 사용자가 새 창을 열거나 기존 창을 분할하면 프레임워크는 새 보기를 생성하고 문서에 연결합니다.
보기는 한 문서에만 첨부할 수 있지만 문서가 분할자 창이나 여러 MDI(문서 인터페이스) 응용 프로그램의 여러 자식 창에 표시되는 경우와 같이 문서에 한 번에 여러 보기가 첨부될 수 있습니다. 애플리케이션은 지정된 문서 형식에 대해 다양한 유형의 보기를 지원할 수 있습니다. 예를 들어, 단어 처리 프로그램은 문서의 전체 텍스트 보기와 섹션 머리글만 표시하는 개요 보기를 모두 제공할 수 있습니다. 분할자 창을 사용하는 경우 이러한 다양한 유형의 보기를 별도의 프레임 창이나 단일 프레임 창의 별도 창에 배치할 수 있습니다.
보기는 메뉴, 도구 모음 또는 스크롤 막대의 명령뿐만 아니라 키보드 입력, 마우스 입력 또는 끌어서 놓기를 통한 입력과 같은 여러 가지 유형의 입력을 처리하는 역할을 담당할 수 있습니다. 보기는 프레임 창에서 전달된 명령을 받습니다. 뷰가 지정된 명령을 처리하지 않으면 해당 명령을 연결된 문서로 전달합니다. 모든 명령 대상과 마찬가지로 보기는 메시지 맵을 통해 메시지를 처리합니다.
뷰는 문서의 데이터를 표시하고 수정하지만 저장하지는 않습니다. 문서에서는 해당 데이터에 대한 필요한 세부 정보를 뷰에 제공합니다. 뷰에서 문서의 데이터 멤버에 직접 액세스하도록 하거나 뷰 클래스에서 호출할 문서 클래스의 멤버 함수를 제공할 수 있습니다.
문서의 데이터가 변경되면 변경 내용을 담당하는 뷰는 일반적으로 문서에 대한 함수를 호출 CDocument::UpdateAllViews
하며, 이 함수는 각각에 대한 멤버 함수를 호출 OnUpdate
하여 다른 모든 보기를 알 수 있습니다. 기본 구현은 OnUpdate
뷰의 전체 클라이언트 영역을 무효화합니다. 문서의 수정된 부분에 매핑되는 클라이언트 영역의 영역만 무효화하도록 재정의할 수 있습니다.
사용 CView
하려면 클래스를 파생시키고 멤버 함수를 OnDraw
구현하여 화면 표시를 수행합니다. 인쇄 및 인쇄 미리 보기를 수행하는 데 사용할 OnDraw
수도 있습니다. 프레임워크는 문서 인쇄 및 미리 보기를 위한 인쇄 루프를 처리합니다.
뷰는 및 멤버 함수를 사용하여 CWnd::OnHScroll
CWnd::OnVScroll
스크롤 막대 메시지를 처리합니다. 이러한 함수에서 스크롤 막대 메시지 처리를 구현하거나 파생 클래스 CScrollView
를 사용하여 CView
스크롤을 처리할 수 있습니다.
CScrollView
또한 Microsoft Foundation 클래스 라이브러리는 다음에서 CView
파생된 9개의 다른 클래스를 제공합니다.
CCtrlView
- 문서 사용을 허용하는 보기 - 트리, 목록 및 서식 있는 편집 컨트롤을 사용하여 아키텍처를 봅니다.CDaoRecordView
- 대화 상자 컨트롤에 데이터베이스 레코드를 표시하는 뷰입니다.CEditView
- 간단한 여러 줄 텍스트 편집기를 제공하는 뷰입니다. 개체를CEditView
대화 상자의 컨트롤과 문서의 보기로 사용할 수 있습니다.CFormView
대화 상자 컨트롤을 포함하고 대화 상자 템플릿 리소스를 기반으로 하는 스크롤 가능한 보기입니다.CListView
- 목록 컨트롤이 있는 뷰 아키텍처 - 문서 사용을 허용하는 뷰입니다.CRecordView
- 대화 상자 컨트롤에 데이터베이스 레코드를 표시하는 뷰입니다.CRichEditView
- 문서 사용을 허용하는 보기 - 다양한 편집 컨트롤이 있는 뷰 아키텍처입니다.CScrollView
- 스크롤 지원을 자동으로 제공하는 뷰입니다.CTreeView
- 문서 사용을 허용하는 뷰 - 트리 컨트롤이 있는 뷰 아키텍처입니다.
클래스에는 CView
프레임워크에서 인쇄 미리 보기를 수행하는 데 사용되는 파생 구현 클래스도 있습니다 CPreviewView
. 이 클래스는 도구 모음, 단일 페이지 또는 두 페이지 미리 보기, 확대/축소, 즉 미리 보기 이미지를 확대하는 등 인쇄 미리 보기 창에 고유한 기능을 지원합니다. 인쇄 미리 보기 모드에서 편집을 지원하려는 경우와 같이 인쇄 미리 보기를 위해 고유한 인터페이스를 구현하려는 경우가 아니면 멤버 함수를 호출하거나 재정 CPreviewView
의할 필요가 없습니다. 사용에 CView
대한 자세한 내용은 문서/뷰 아키텍처 및 인쇄를 참조하세요. 또한 인쇄 미리 보기 사용자 지정에 대한 자세한 내용은 Technical Note 30을 참조하세요.
상속 계층 구조
CView
요구 사항
머리글: afxwin.h
CView::CView
CView
개체를 생성합니다.
CView();
설명
프레임워크는 새 프레임 창을 만들거나 창을 분할할 때 생성자를 호출합니다. 문서가 첨부된 OnInitialUpdate
후 뷰를 초기화하도록 멤버 함수를 재정의합니다.
CView::DoPreparePrinting
재정의 OnPreparePrinting
에서 이 함수를 호출하여 인쇄 대화 상자를 호출하고 프린터 디바이스 컨텍스트를 만듭니다.
BOOL DoPreparePrinting(CPrintInfo* pInfo);
매개 변수
pInfo
CPrintInfo
현재 인쇄 작업을 설명하는 구조를 가리킵니다.
Return Value
인쇄 또는 인쇄 미리 보기를 시작할 수 있는 경우 0이 아닌 경우 작업이 취소된 경우 0입니다.
설명
이 함수의 동작은 인쇄 또는 인쇄 미리 보기를 위해 호출되는지 여부에 따라 달라집니다(매개 변수의 pInfo
멤버에 의해 m_bPreview
지정됨). 파일이 인쇄되는 경우 이 함수는 가리키는 구조 pInfo
의 값을 CPrintInfo
사용하여 인쇄 대화 상자를 호출합니다. 사용자가 대화 상자를 닫은 후에는 사용자가 대화 상자에 지정한 설정에 따라 프린터 디바이스 컨텍스트를 만들고 매개 변수를 통해 pInfo
이 디바이스 컨텍스트를 반환합니다. 이 디바이스 컨텍스트는 문서를 인쇄하는 데 사용됩니다.
파일을 미리 보는 경우 이 함수는 현재 프린터 설정을 사용하여 프린터 디바이스 컨텍스트를 만듭니다. 이 디바이스 컨텍스트는 미리 보기 중에 프린터를 시뮬레이션하는 데 사용됩니다.
CView::GetDocument
이 함수를 호출하여 뷰의 문서에 대한 포인터를 가져옵니다.
CDocument* GetDocument() const;
Return Value
뷰와 연결된 개체에 CDocument
대한 포인터입니다. NULL
보기가 문서에 첨부되지 않은 경우
설명
이렇게 하면 문서의 멤버 함수를 호출할 수 있습니다.
CView::IsSelected
프레임워크에서 호출하여 지정된 문서 항목이 선택되었는지 여부를 확인합니다.
virtual BOOL IsSelected(const CObject* pDocItem) const;
매개 변수
pDocItem
테스트 중인 문서 항목을 가리킵니다.
Return Value
지정한 문서 항목이 선택된 경우 0이 아닌 경우 그렇지 않으면 0입니다.
설명
이 함수의 기본 구현은 .FALSE
개체를 사용하여 CDocItem
선택을 구현하는 경우 이 함수를 재정의합니다. 보기에 OLE 항목이 포함된 경우 이 함수를 재정의해야 합니다.
CView::OnActivateFrame
보기가 포함된 프레임 창이 활성화되거나 비활성화될 때 프레임워크에서 호출됩니다.
virtual void OnActivateFrame(
UINT nState,
CFrameWnd* pFrameWnd);
매개 변수
nState
프레임 창이 활성화되거나 비활성화되는지 여부를 지정합니다. 다음 값 중 하나일 수 있습니다.
WA_INACTIVE
프레임 창이 비활성화되고 있습니다.WA_ACTIVE
프레임 창은 마우스 클릭 이외의 일부 방법을 통해 활성화됩니다(예: 키보드 인터페이스를 사용하여 창을 선택).WA_CLICKACTIVE
마우스 클릭으로 프레임 창이 활성화되고 있습니다.
pFrameWnd
활성화할 프레임 창에 대한 포인터입니다.
설명
보기와 연결된 프레임 창이 활성화되거나 비활성화될 때 특수 처리를 수행하려는 경우 이 멤버 함수를 재정의합니다. 예를 들어 CFormView
포커스가 있는 컨트롤을 저장하고 복원할 때 이 재정의를 수행합니다.
CView::OnActivateView
보기가 활성화되거나 비활성화될 때 프레임워크에서 호출됩니다.
virtual void OnActivateView(
BOOL bActivate,
CView* pActivateView,
CView* pDeactiveView);
매개 변수
bActivate
뷰가 활성화되고 있는지 또는 비활성화되는지를 나타냅니다.
pActivateView
활성화 중인 뷰 개체를 가리킵니다.
pDeactiveView
비활성화 중인 뷰 개체를 가리킵니다.
설명
이 함수의 기본 구현은 포커스를 활성화되는 뷰로 설정합니다. 뷰가 활성화되거나 비활성화될 때 특수 처리를 수행하려는 경우 이 함수를 재정의합니다. 예를 들어 활성 뷰와 비활성 보기를 구분하는 특수한 시각적 신호를 제공하려는 경우 매개 변수를 bActivate
검사하고 그에 따라 보기의 모양을 업데이트합니다.
pActivateView
활성 보기에서 변경 없이 애플리케이션의 주 프레임 창이 활성화된 경우와 pDeactiveView
같은 보기를 가리킵니다. 예를 들어 포커스가 애플리케이션 내의 한 보기에서 다른 보기로 또는 MDI 자식 창 간에 전환할 때 다른 애플리케이션에서 이 보기로 전송되는 경우와 같습니다. 이렇게 하면 뷰가 필요한 경우 해당 색상표를 다시 실현할 수 있습니다.
이러한 매개 변수는 반환되는 것과 다른 CFrameWnd::GetActiveView
뷰를 사용하여 호출될 때 CFrameWnd::SetActiveView
다릅니다. 분할자 창에서 가장 자주 발생합니다.
CView::OnBeginPrinting
OnPreparePrinting
이 호출된 후 인쇄 또는 인쇄 미리 보기 작업을 시작할 때 프레임워크에서 호출됩니다.
virtual void OnBeginPrinting(
CDC* pDC,
CPrintInfo* pInfo);
매개 변수
pDC
프린터 디바이스 컨텍스트를 가리킵니다.
pInfo
CPrintInfo
현재 인쇄 작업을 설명하는 구조를 가리킵니다.
설명
이 함수의 기본 구현은 아무 작업도 수행하지 않습니다. 인쇄용으로 특별히 필요한 GDI 리소스(예: 펜 또는 글꼴)를 할당하려면 이 함수를 재정의합니다. GDI 개체를 사용하는 각 페이지의 멤버 함수 내에서 OnPrint
디바이스 컨텍스트로 GDI 개체를 선택합니다. 동일한 view 개체를 사용하여 화면 표시와 인쇄를 모두 수행하는 경우 각 화면 표시에 필요한 GDI 리소스에 별도의 변수를 사용합니다. 이렇게 하면 인쇄하는 동안 화면을 업데이트할 수 있습니다.
또한 이 함수를 사용하여 프린터 디바이스 컨텍스트의 속성에 따라 초기화를 수행할 수 있습니다. 예를 들어 문서를 인쇄하는 데 필요한 페이지 수는 사용자가 인쇄 대화 상자에서 지정한 설정(예: 페이지 길이)에 따라 다를 수 있습니다. 이러한 경우 멤버 함수에서 OnPreparePrinting
일반적으로 문서 길이를 지정할 수 없습니다. 대화 상자 설정에 따라 프린터 장치 컨텍스트가 만들어질 때까지 기다려야 합니다. OnBeginPrinting
는 프린터 장치 컨텍스트를 나타내는 개체에 CDC
대한 액세스를 제공하는 첫 번째 재정의 가능한 함수이므로 이 함수에서 문서 길이를 설정할 수 있습니다. 이때까지 문서 길이를 지정하지 않으면 인쇄 미리 보기 중에 스크롤 막대가 표시되지 않습니다.
CView::OnDragEnter
마우스가 먼저 놓기 대상 창의 스크롤하지 않는 영역에 들어갈 때 프레임워크에서 호출됩니다.
virtual DROPEFFECT OnDragEnter(
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
매개 변수
pDataObject
뷰의 COleDataObject
놓기 영역으로 끌어서 놓는 것을 가리킵니다.
dwKeyState
한정자 키의 상태를 포함합니다. 이 조합은 다음과 같은 MK_CONTROL
수의 조합입니다. , , MK_SHIFT
MK_ALT
, MK_LBUTTON
MK_MBUTTON
및 MK_RBUTTON
.
point
보기의 클라이언트 영역을 기준으로 현재 마우스 위치입니다.
Return Value
열거형 형식의 DROPEFFECT
값으로, 사용자가 개체를 이 위치에 놓을 때 발생할 놓기 유형을 나타냅니다. 일반적으로 삭제 유형은 로 표시된 dwKeyState
현재 키 상태에 따라 달라집니다. 키 상태 DROPEFFECT
와 값의 표준 매핑은 다음과 같습니다.
DROPEFFECT_NONE
이 창에서 데이터 개체를 삭제할 수 없습니다.DROPEFFECT_LINK
개체MK_CONTROL|MK_SHIFT
와 해당 서버 간의 연결을 만듭니다.DROPEFFECT_COPY
삭제MK_CONTROL
된 개체의 복사본을 만듭니다.DROPEFFECT_MOVE
는MK_ALT
삭제된 개체의 복사본을 만들고 원래 개체를 삭제합니다. 보기에서 이 데이터 개체를 수락할 수 있는 경우 이는 일반적으로 기본 드롭 효과입니다.
자세한 내용은 MFC 고급 개념 샘플을 OCLIENT
참조하세요.
설명
기본 구현은 아무 작업도 수행하지 않으며 반환하는 것입니다 DROPEFFECT_NONE
.
이 함수를 재정의하여 멤버 함수에 대한 이후 호출을 준비합니다 OnDragOver
. 나중에 멤버 함수에서 사용하려면 데이터 개체에서 OnDragOver
필요한 모든 데이터를 이 시점에서 검색해야 합니다. 또한 사용자에게 시각적 피드백을 제공하기 위해 이 시점에서 보기를 업데이트해야 합니다. 자세한 내용은 OLE 끌어서 놓기: 놓기 대상 구현 문서를 참조하세요.
CView::OnDragLeave
마우스가 해당 창의 유효한 놓기 영역 밖으로 이동될 때 끌기 작업 중에 프레임워크에서 호출됩니다.
virtual void OnDragLeave();
설명
개체를 끌어서 놓는 동안 OnDragEnter
시각적 사용자 피드백을 제거하는 등 현재 보기에서 수행된 작업이나 OnDragOver
호출을 정리해야 하는 경우 이 함수를 재정의합니다.
CView::OnDragOver
마우스를 놓기 대상 창 위로 이동할 때 끌기 작업 중에 프레임워크에서 호출됩니다.
virtual DROPEFFECT OnDragOver(
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
매개 변수
pDataObject
놓기 COleDataObject
대상 위로 끌어서 놓기 대상을 가리킵니다.
dwKeyState
한정자 키의 상태를 포함합니다. 이 조합은 다음과 같은 MK_CONTROL
수의 조합입니다. , , MK_SHIFT
MK_ALT
, MK_LBUTTON
MK_MBUTTON
및 MK_RBUTTON
.
point
뷰 클라이언트 영역을 기준으로 현재 마우스 위치입니다.
Return Value
열거형 형식의 DROPEFFECT
값으로, 사용자가 개체를 이 위치에 놓을 때 발생할 놓기 유형을 나타냅니다. 드롭 유형은 다음과 같이 dwKeyState
현재 키 상태에 따라 달라지는 경우가 많습니다. 키 상태 DROPEFFECT
와 값의 표준 매핑은 다음과 같습니다.
DROPEFFECT_NONE
이 창에서 데이터 개체를 삭제할 수 없습니다.DROPEFFECT_LINK
개체MK_CONTROL|MK_SHIFT
와 해당 서버 간의 연결을 만듭니다.DROPEFFECT_COPY
삭제MK_CONTROL
된 개체의 복사본을 만듭니다.DROPEFFECT_MOVE
는MK_ALT
삭제된 개체의 복사본을 만들고 원래 개체를 삭제합니다. 보기에서 데이터 개체를 수락할 수 있는 경우 이는 일반적으로 기본 드롭 효과입니다.
자세한 내용은 MFC 고급 개념 샘플을 OCLIENT
참조하세요.
설명
기본 구현은 아무 작업도 수행하지 않으며 반환하는 것입니다 DROPEFFECT_NONE
.
끌기 작업 중에 사용자에게 시각적 피드백을 제공하도록 이 함수를 재정의합니다. 이 함수는 지속적으로 호출되므로 해당 함수 내에 포함된 모든 코드는 최대한 최적화되어야 합니다. 자세한 내용은 OLE 끌어서 놓기: 놓기 대상 구현 문서를 참조하세요.
CView::OnDragScroll
호출하기 전에 프레임워크에서 호출 OnDragEnter
하거나 OnDragOver
점이 스크롤 영역에 있는지 여부를 확인합니다.
virtual DROPEFFECT OnDragScroll(
DWORD dwKeyState,
CPoint point);
매개 변수
dwKeyState
한정자 키의 상태를 포함합니다. 이 조합은 다음과 같은 MK_CONTROL
수의 조합입니다. , , MK_SHIFT
MK_ALT
, MK_LBUTTON
MK_MBUTTON
및 MK_RBUTTON
.
point
화면을 기준으로 커서의 위치를 픽셀 단위로 포함합니다.
Return Value
열거형 형식의 DROPEFFECT
값으로, 사용자가 개체를 이 위치에 놓을 때 발생할 놓기 유형을 나타냅니다. 일반적으로 삭제 유형은 로 표시된 dwKeyState
현재 키 상태에 따라 달라집니다. 키 상태 DROPEFFECT
와 값의 표준 매핑은 다음과 같습니다.
DROPEFFECT_NONE
이 창에서 데이터 개체를 삭제할 수 없습니다.DROPEFFECT_LINK
개체MK_CONTROL|MK_SHIFT
와 해당 서버 간의 연결을 만듭니다.DROPEFFECT_COPY
삭제MK_CONTROL
된 개체의 복사본을 만듭니다.DROPEFFECT_MOVE
는MK_ALT
삭제된 개체의 복사본을 만들고 원래 개체를 삭제합니다.DROPEFFECT_SCROLL
끌기 스크롤 작업이 수행되거나 대상 보기에서 발생 중임을 나타냅니다.
자세한 내용은 MFC 고급 개념 샘플을 OCLIENT
참조하세요.
설명
이 이벤트에 대해 특별한 동작을 제공하려는 경우 이 함수를 재정의합니다. 커서를 각 창의 테두리 내의 기본 스크롤 영역으로 끌면 기본 구현은 창을 자동으로 스크롤합니다. 자세한 내용은 OLE 끌어서 놓기: 놓기 대상 구현 문서를 참조하세요.
CView::OnDraw
문서의 이미지를 렌더링하기 위해 프레임워크에서 호출됩니다.
virtual void OnDraw(CDC* pDC) = 0;
매개 변수
pDC
문서의 이미지를 렌더링하는 데 사용할 디바이스 컨텍스트를 가리킵니다.
설명
프레임워크는 이 함수를 호출하여 화면 표시, 인쇄 및 인쇄 미리 보기를 수행하고 각 경우에 다른 디바이스 컨텍스트를 전달합니다. 기본 구현은 없습니다.
문서의 보기를 표시하려면 이 함수를 재정의해야 합니다. 매개 변수가 가리키는 개체를 사용하여 CDC
GDI(그래픽 디바이스 인터페이스) 호출을 pDC
수행할 수 있습니다. 그리기 전에 펜 또는 글꼴과 같은 GDI 리소스를 디바이스 컨텍스트로 선택한 다음 나중에 선택 취소할 수 있습니다. 그리기 코드는 디바이스 독립적일 수 있는 경우가 많습니다. 즉, 이미지를 표시하는 디바이스 유형에 대한 정보가 필요하지 않습니다.
그리기를 최적화하려면 디바이스 컨텍스트의 멤버 함수를 호출 RectVisible
하여 지정된 사각형을 그릴지 여부를 확인합니다. 일반 화면 표시와 인쇄를 구분해야 하는 경우 디바이스 컨텍스트의 IsPrinting
멤버 함수를 호출합니다.
CView::OnDrop
사용자가 유효한 놓기 대상을 통해 데이터 개체를 해제할 때 프레임워크에서 호출됩니다.
virtual BOOL OnDrop(
COleDataObject* pDataObject,
DROPEFFECT dropEffect,
CPoint point);
매개 변수
pDataObject
놓기 COleDataObject
대상에 놓인 대상을 가리킵니다.
dropEffect
사용자가 요청한 삭제 효과입니다.
DROPEFFECT_COPY
삭제할 데이터 개체의 복사본을 만듭니다.DROPEFFECT_MOVE
데이터 개체를 현재 마우스 위치로 이동합니다.DROPEFFECT_LINK
데이터 개체와 해당 서버 간에 링크를 만듭니다.
point
뷰 클라이언트 영역을 기준으로 현재 마우스 위치입니다.
Return Value
삭제에 성공하면 0이 아닌 값입니다. 그렇지 않으면 0입니다.
설명
기본 구현은 아무 작업도 수행 하지 하 고 반환 FALSE
합니다.
이 함수를 재정의하여 보기의 클라이언트 영역에 OLE 드롭 효과를 구현합니다. 데이터 개체는 클립보드 데이터 형식 및 지정된 지점에서 삭제된 데이터를 통해 pDataObject
검사할 수 있습니다.
참고 항목
이 뷰 클래스에 재정의가 있는 경우 프레임워크는 이 함수를 OnDropEx
호출하지 않습니다.
CView::OnDropEx
사용자가 유효한 놓기 대상을 통해 데이터 개체를 해제할 때 프레임워크에서 호출됩니다.
virtual DROPEFFECT OnDropEx(
COleDataObject* pDataObject,
DROPEFFECT dropDefault,
DROPEFFECT dropList,
CPoint point);
매개 변수
pDataObject
놓기 COleDataObject
대상에 놓인 대상을 가리킵니다.
dropDefault
사용자가 현재 키 상태에 따라 기본 놓기 작업에 대해 선택한 효과입니다. DROPEFFECT_NONE
일 수 있습니다. 삭제 효과는 주의 섹션에 설명되어 있습니다.
dropList
드롭 소스에서 지원하는 드롭 효과 목록입니다. 삭제 효과 값은 비트 OR( |
) 연산을 사용하여 결합할 수 있습니다. 삭제 효과는 주의 섹션에 설명되어 있습니다.
point
뷰 클라이언트 영역을 기준으로 현재 마우스 위치입니다.
Return Value
로 지정된 point
위치에서의 놓기 시도에서 발생한 드롭 효과입니다. 이 값은 으로 표시된 dropEffectList
값 중 하나여야 합니다. 삭제 효과는 주의 섹션에 설명되어 있습니다.
설명
기본 구현은 아무 작업도 수행하지 않으며 더미 값(-1)을 반환하여 프레임워크가 처리기를 호출 OnDrop
해야 함을 나타내는 것입니다.
마우스 오른쪽 단추 끌어서 놓기의 효과를 구현하려면 이 함수를 재정의합니다. 마우스 오른쪽 단추 끌어서 놓기는 일반적으로 오른쪽 마우스 단추가 놓일 때 선택 메뉴가 표시됩니다.
재정의 OnDropEx
는 마우스 오른쪽 단추를 쿼리해야 합니다. 처리기에서 마우스 오른쪽 단추 상태를 호출 GetKeyState
하거나 저장할 수 있습니다 OnDragEnter
.
마우스 오른쪽 단추가 다운된 경우 재정의는 드롭 소스에서 드롭 효과를 지원하는 팝업 메뉴를 표시해야 합니다.
드롭 소스에서 지원하는 드롭 효과를 확인하려면 검사
dropList
합니다. 팝업 메뉴에서 이러한 작업만 사용하도록 설정합니다.에 따라
dropDefault
기본 작업을 설정하는 데 사용합니다SetMenuDefaultItem
.마지막으로 팝업 메뉴에서 사용자 선택 항목으로 표시된 작업을 수행합니다.
마우스 오른쪽 단추가 다운되지 않은 경우 재정의에서 이를 표준 드롭 요청으로 처리해야 합니다. 에 지정된
dropDefault
드롭 효과를 사용합니다. 또는 재정의가 더미 값(-1)을 반환하여 이 삭제 작업을 처리함을OnDrop
나타낼 수 있습니다.
지정된 지점에서 삭제된 클립보드 데이터 형식 및 데이터를 검사 COleDataObject
하는 데 사용합니다pDataObject
.
놓기 효과는 삭제 작업과 관련된 작업을 설명합니다. 다음 드롭 효과 목록을 참조하세요.
DROPEFFECT_NONE
삭제는 허용되지 않습니다.DROPEFFECT_COPY
복사 작업이 수행됩니다.DROPEFFECT_MOVE
이동 작업이 수행됩니다.DROPEFFECT_LINK
삭제된 데이터에서 원래 데이터로의 링크가 설정됩니다.DROPEFFECT_SCROLL
끌기 스크롤 작업이 발생하거나 대상에서 발생 중임을 나타냅니다.
기본 메뉴 명령을 설정하는 방법에 대한 자세한 내용은 Windows SDK 및 CMenu::GetSafeHmenu
이 볼륨을 참조 SetMenuDefaultItem
하세요.
CView::OnEndPrinting
문서가 인쇄되거나 미리 보기된 후 프레임워크에서 호출됩니다.
virtual void OnEndPrinting(
CDC* pDC,
CPrintInfo* pInfo);
매개 변수
pDC
프린터 디바이스 컨텍스트를 가리킵니다.
pInfo
CPrintInfo
현재 인쇄 작업을 설명하는 구조를 가리킵니다.
설명
이 함수의 기본 구현은 아무 작업도 수행하지 않습니다. 멤버 함수에 할당한 GDI 리소스를 해제하려면 이 함수를 재정의 OnBeginPrinting
합니다.
CView::OnEndPrintPreview
사용자가 인쇄 미리 보기 모드를 종료할 때 프레임워크에서 호출됩니다.
virtual void OnEndPrintPreview(
CDC* pDC,
CPrintInfo* pInfo,
POINT point,
CPreviewView* pView);
매개 변수
pDC
프린터 디바이스 컨텍스트를 가리킵니다.
pInfo
CPrintInfo
현재 인쇄 작업을 설명하는 구조를 가리킵니다.
point
미리 보기 모드에서 마지막으로 표시된 페이지의 지점을 지정합니다.
pView
미리 보기에 사용되는 뷰 개체를 가리킵니다.
설명
이 함수의 기본 구현은 멤버 함수를 OnEndPrinting
호출하고 기본 프레임 창을 인쇄 미리 보기가 시작되기 전의 상태로 복원합니다. 미리 보기 모드가 종료될 때 특수 처리를 수행하도록 이 함수를 재정의합니다. 예를 들어 미리 보기 모드에서 일반 표시 모드로 전환할 때 문서에서 사용자의 위치를 유지하려면 매개 변수에서 설명하는 point
위치와 m_nCurPage
매개 변수가 pInfo
가리키는 구조체의 CPrintInfo
멤버로 스크롤할 수 있습니다.
일반적으로 함수의 끝에 있는 재정의 OnEndPrintPreview
에서 항상 기본 클래스 버전을 호출합니다.
CView::OnInitialUpdate
뷰가 문서에 처음 첨부된 후 보기가 처음 표시되기 전에 프레임워크에서 호출됩니다.
virtual void OnInitialUpdate();
설명
이 함수의 기본 구현은 힌트 정보 없이 멤버 함수를 호출 OnUpdate
합니다(즉, 매개 변수 및 NULL
pHint
매개 변수에 대해 lHint
기본값 0 사용). 문서에 대한 정보가 필요한 일회성 초기화를 수행하도록 이 함수를 재정의합니다. 예를 들어 애플리케이션에 고정 크기 문서가 있는 경우 이 함수를 사용하여 문서 크기에 따라 보기의 스크롤 제한을 초기화할 수 있습니다. 애플리케이션에서 가변 크기의 문서를 지원하는 경우 문서가 변경될 때마다 스크롤 제한을 업데이트하는 데 사용합니다 OnUpdate
.
CView::OnPrepareDC
화면 표시를 위해 멤버 함수가 OnDraw
호출되기 전과 인쇄 또는 인쇄 미리 보기 중에 각 페이지에 대해 멤버 함수가 호출되기 전에 OnPrint
프레임워크에서 호출됩니다.
virtual void OnPrepareDC(
CDC* pDC,
CPrintInfo* pInfo = NULL);
매개 변수
pDC
문서의 이미지를 렌더링하는 데 사용할 디바이스 컨텍스트를 가리킵니다.
pInfo
CPrintInfo
인쇄 또는 인쇄 미리 보기를 위해 호출되는 경우 OnPrepareDC
현재 인쇄 작업을 설명하는 구조를 가리킵니다. 멤버는 m_nCurPage
인쇄할 페이지를 지정합니다. 이 매개 변수는 NULL
화면 표시를 위해 호출되는 경우 OnPrepareDC
입니다.
설명
이 함수의 기본 구현은 화면 표시를 위해 함수를 호출하는 경우 아무 작업도 수행하지 않습니다. 그러나 이 함수는 디바이스 컨텍스트의 특성을 조정하기 위해 파생 클래스(예: CScrollView
파생 클래스)에서 재정의됩니다. 따라서 재정의를 시작할 때 항상 기본 클래스 구현을 호출해야 합니다.
인쇄를 위해 함수를 호출하는 경우 기본 구현은 매개 변수에 pInfo
저장된 페이지 정보를 검사합니다. 문서의 길이를 지정 OnPrepareDC
하지 않은 경우 문서를 한 페이지 길이로 가정하고 한 페이지를 인쇄한 후 인쇄 루프를 중지합니다. 이 함수는 구조체의 멤버를 .로 설정 m_bContinuePrinting
하여 인쇄 루프를 중지합니다 FALSE
.
다음 이유 중 어떤 이유로든 재정 OnPrepareDC
의합니다.
지정된 페이지에 대해 필요에 따라 디바이스 컨텍스트의 특성을 조정합니다. 예를 들어 매핑 모드 또는 디바이스 컨텍스트의 다른 특성을 설정해야 하는 경우 이 함수에서 설정합니다.
인쇄 시간 페이지 매김을 수행합니다. 일반적으로 멤버 함수를 사용하여 인쇄를 시작할 때 문서의 길이를
OnPreparePrinting
지정합니다. 그러나 문서가 얼마나 오래 걸리는지 미리 모르는 경우(예: 데이터베이스에서 결정되지 않은 레코드 수를 인쇄할 때) 문서를 인쇄하는 동안 문서의 끝을 테스트하도록 재정OnPrepareDC
의합니다. 인쇄할 문서가 더 이상 없으면 구조FALSE
체의CPrintInfo
멤버를m_bContinuePrinting
으로 설정합니다.페이지 단위로 프린터에 이스케이프 코드를 보냅니다. 이
OnPrepareDC
스케이프 코드를 보내려면 매개 변수의Escape
멤버 함수를 호출합니다pDC
.
재정의 시작 부분에 있는 OnPrepareDC
기본 클래스 버전을 호출합니다.
예시
void CMyView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
CView::OnPrepareDC(pDC, pInfo);
// If we are printing, set the mapmode and the window
// extent properly, then set viewport extent. Use the
// SetViewportOrg member function in the CDC class to
// move the viewport origin to the center of the view.
if (pDC->IsPrinting()) // Is the DC a printer DC.
{
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ISOTROPIC);
CSize ptOldWinExt = pDC->SetWindowExt(1000, 1000);
ASSERT(ptOldWinExt.cx != 0 && ptOldWinExt.cy != 0);
CSize ptOldViewportExt = pDC->SetViewportExt(rect.Width(), -rect.Height());
ASSERT(ptOldViewportExt.cx != 0 && ptOldViewportExt.cy != 0);
CPoint ptOldOrigin = pDC->SetViewportOrg(rect.Width() / 2, rect.Height() / 2);
}
}
CView::OnPreparePrinting
문서를 인쇄하거나 미리 보기 전에 프레임워크에서 호출합니다.
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
매개 변수
pInfo
CPrintInfo
현재 인쇄 작업을 설명하는 구조를 가리킵니다.
Return Value
0이 아닌 경우 인쇄를 시작합니다. 인쇄 작업이 취소된 경우 0입니다.
설명
기본 구현은 아무 작업도 수행하지 않습니다.
인쇄 및 인쇄 미리 보기를 사용하도록 설정하려면 이 함수를 재정의해야 합니다. 멤버 함수를 DoPreparePrinting
호출하여 매개 변수를 pInfo
전달한 다음 반환 값을 DoPreparePrinting
반환합니다. 인쇄 대화 상자를 표시하고 프린터 디바이스 컨텍스트를 만듭니다. 기본값이 아닌 값을 사용하여 인쇄 대화 상자를 초기화하려면 값을 해당 pInfo
멤버에 할당합니다. 예를 들어 문서의 길이를 알고 있는 경우 호출하기 전에 SetMaxPage 멤버 함수에 pInfo
값을 전달 DoPreparePrinting
합니다. 이 값은 인쇄 대화 상자의 범위 부분에 있는 To: 상자에 표시됩니다.
DoPreparePrinting
는 미리 보기 작업에 대한 인쇄 대화 상자를 표시하지 않습니다. 인쇄 작업의 인쇄 대화 상자를 무시하려면 해당 멤버 FALSE
pInfo
가 있는지 m_bPreview
확인한 다음 전달하기 전에 해당 대화 상자를 설정하여 DoPreparePrinting
나중에 다시 설정합니다 TRUE
FALSE
.
프린터 디바이스 컨텍스트를 나타내는 개체에 CDC
액세스해야 하는 초기화를 수행해야 하는 경우(예: 문서 길이를 지정하기 전에 페이지 크기를 알아야 하는 경우) 멤버 함수를 재정 OnBeginPrinting
의합니다.
매개 변수 또는 매개 변수의 m_nNumPreviewPages
m_strPageDesc
pInfo
멤버 값을 설정하려면 호출 DoPreparePrinting
후 설정합니다. 멤버 함수는 DoPreparePrinting
애플리케이션에 있는 값으로 설정합니다 m_nNumPreviewPages
. INI 파일 및 기본값으로 설정합니다 m_strPageDesc
.
예시
프레임워크에서 인쇄 대화 상자를 표시하고 프린터 DC를 만들 수 있도록 재정의에서 재정 OnPreparePrinting
의 및 호출 DoPreparePrinting
합니다.
BOOL CMyEditView::OnPreparePrinting(CPrintInfo* pInfo)
{
return CEditView::DoPreparePrinting(pInfo);
}
문서에 포함된 페이지 수를 알고 있는 경우 호출DoPreparePrinting
하기 전에 최대 페이지를 OnPreparePrinting
설정합니다. 프레임워크는 인쇄 대화 상자의 "대상" 상자에 최대 페이지 번호를 표시합니다.
BOOL CExampleView::OnPreparePrinting(CPrintInfo* pInfo)
{
//The document has 2 pages.
pInfo->SetMaxPage(2);
return CView::DoPreparePrinting(pInfo);
}
CView::OnPrint
문서의 페이지를 인쇄하거나 미리 보기 위해 프레임워크에서 호출됩니다.
virtual void OnPrint(
CDC* pDC,
CPrintInfo* pInfo);
매개 변수
pDC
프린터 디바이스 컨텍스트를 가리킵니다.
pInfo
CPrintInfo
현재 인쇄 작업을 설명하는 구조를 가리킵니다.
설명
인쇄되는 각 페이지에 대해 프레임워크는 멤버 함수를 호출한 직후 이 함수를 호출합니다 OnPrepareDC
. 인쇄되는 페이지는 가리키는 구조 pInfo
체의 멤버에 CPrintInfo
의해 m_nCurPage
지정됩니다. 기본 구현은 멤버 함수를 OnDraw
호출하고 프린터 디바이스 컨텍스트를 전달합니다.
다음 이유 중 어떤 이유로든 이 함수를 재정의합니다.
다중 페이지 문서 인쇄를 허용합니다. 현재 인쇄 중인 페이지에 해당하는 문서 부분만 렌더링합니다. 렌더링을 수행하는 데 사용하는
OnDraw
경우 문서의 적절한 부분만 인쇄되도록 뷰포트 원본을 조정할 수 있습니다.인쇄된 이미지를 화면 이미지와 다르게 표시하려면(즉, 애플리케이션이 WYSIWYG가 아닌 경우) 프린터 디바이스 컨텍스트를
OnDraw
전달하는 대신 디바이스 컨텍스트를 사용하여 화면에 표시되지 않는 특성을 사용하여 이미지를 렌더링합니다.화면 표시에 사용하지 않는 인쇄에 GDI 리소스가 필요한 경우 나중에 그리기 전에 디바이스 컨텍스트로 선택하고 선택을 취소합니다. 이러한 GDI 리소스는 에 할당
OnBeginPrinting
되어 릴리스OnEndPrinting
되어야 합니다.머리글 또는 바닥글을 구현하려면 인쇄할 수 있는 영역을 제한하여 렌더링을 수행하는 데 계속 사용할
OnDraw
수 있습니다.
매개 변수의 pInfo
멤버는 m_rectDraw
페이지의 인쇄 가능한 영역을 논리적 단위로 설명합니다.
재정의OnPrint
에서 호출 OnPrepareDC
하지 마세요. 호출하기 전에 프레임워크가 자동으로 호출 OnPrepareDC
OnPrint
됩니다.
예시
다음은 재정의된 OnPrint
함수에 대한 기본 구조입니다.
void CMyView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
UNREFERENCED_PARAMETER(pInfo);
// Print headers and/or footers, if desired.
// Find portion of document corresponding to pInfo->m_nCurPage.
OnDraw(pDC);
}
다른 예제를 보려면 CRichEditView::PrintInsideRect
를 참조하십시오.
CView::OnScroll
프레임워크에서 호출하여 스크롤이 가능한지 여부를 확인합니다.
virtual BOOL OnScroll(
UINT nScrollCode,
UINT nPos,
BOOL bDoScroll = TRUE);
매개 변수
nScrollCode
사용자의 스크롤 요청을 나타내는 스크롤 막대 코드입니다. 이 매개 변수는 가로로 발생하는 스크롤 유형을 결정하는 하위 바이트와 세로로 발생하는 스크롤 유형을 결정하는 상위 바이트라는 두 부분으로 구성됩니다.
SB_BOTTOM
아래로 스크롤합니다.SB_LINEDOWN
한 줄 아래로 스크롤합니다.SB_LINEUP
한 줄을 위로 스크롤합니다.SB_PAGEDOWN
한 페이지를 아래로 스크롤합니다.SB_PAGEUP
한 페이지를 위로 스크롤합니다.SB_THUMBTRACK
스크롤 상자를 지정된 위치로 끕니다. 현재 위치는 에nPos
지정됩니다.SB_TOP
위로 스크롤합니다.
nPos
스크롤 막대 코드 SB_THUMBTRACK
가 있으면 현재 스크롤 상자 위치를 포함하며, 그렇지 않으면 사용되지 않습니다. 초기 스크롤 범위에 nPos
따라 음수일 수 있으며 필요한 경우 캐스팅 int
해야 합니다.
bDoScroll
지정된 스크롤 작업을 실제로 수행해야 하는지 여부를 결정합니다. 이면 TRUE
스크롤이 수행되어야 합니다. 이 경우 FALSE
스크롤이 수행되지 않아야 합니다.
Return Value
보기 TRUE
가 실제로 스크롤된 경우 bDoScroll
0이 아닌 값을 반환하고, 그렇지 않으면 0을 반환합니다. 이 FALSE
경우 bDoScroll
실제로 스크롤을 수행하지 않더라도 반환했을 값을 반환 bDoScroll
TRUE
합니다.
설명
한 경우 이 함수는 보기가 스크롤 막대 메시지를 받을 때로 TRUE
설정된 프레임워크 bDoScroll
에서 호출됩니다. 이 경우 실제로 보기를 스크롤해야 합니다. 다른 경우 이 함수는 스크롤이 실제로 발생하기 전에 OLE 항목이 처음에 놓기 대상의 자동 스크롤 영역으로 끌 때로 설정된 FALSE
상태로 호출 bDoScroll
됩니다. 이 경우 실제로 보기를 스크롤하면 안 됩니다.
CView::OnScrollBy
사용자가 보기의 현재 테두리에 대해 OLE 항목을 끌거나 세로 또는 가로 스크롤 막대를 조작하여 문서의 현재 보기 너머의 영역을 볼 때 프레임워크에서 호출됩니다.
virtual BOOL OnScrollBy(
CSize sizeScroll,
BOOL bDoScroll = TRUE);
매개 변수
sizeScroll
가로 및 세로로 스크롤된 픽셀 수입니다.
bDoScroll
뷰 스크롤이 발생하는지 여부를 결정합니다. 이면 TRUE
스크롤이 수행됩니다. 이 경우 FALSE
스크롤이 발생하지 않습니다.
Return Value
뷰를 스크롤할 수 있으면 0이 아닌 경우 그렇지 않으면 0입니다.
설명
파생 클래스에서 이 메서드는 사용자가 요청한 방향으로 뷰를 스크롤할 수 있는지 확인한 다음 필요한 경우 새 지역을 업데이트합니다. 이 함수는 실제 스크롤 요청에 의해 CWnd::OnHScroll
자동으로 호출되고 CWnd::OnVScroll
수행됩니다.
이 메서드의 기본 구현은 뷰를 변경하지 않지만 호출되지 않으면 뷰가 -derived 클래스에서 CScrollView
스크롤되지 않습니다.
문서 너비 또는 높이가 32767픽셀을 초과하면 잘못된 sizeScroll
인수로 호출되므로 32767을 지나서 스크롤하지 못합니다OnScrollBy
.
CView::OnUpdate
보기의 문서가 수정된 후 프레임워크에서 호출됩니다. 이 함수는 CDocument::UpdateAllViews
호출되며 뷰에서 해당 수정 내용을 반영하도록 디스플레이를 업데이트할 수 있습니다.
virtual void OnUpdate(
CView* pSender,
LPARAM lHint,
CObject* pHint);
매개 변수
pSender
문서를 수정한 뷰를 가리키거나 NULL
모든 보기를 업데이트할 것인지를 가리킵니다.
lHint
수정 내용에 대한 정보를 포함합니다.
pHint
수정 내용에 대한 정보를 저장하는 개체를 가리킵니다.
설명
의 기본 구현으로도 호출됩니다 OnInitialUpdate
. 기본 구현은 전체 클라이언트 영역을 무효화하여 다음 WM_PAINT
메시지를 받을 때 그리기 위해 표시합니다. 문서의 수정된 부분에 매핑되는 영역만 업데이트하려면 이 함수를 재정의합니다. 이렇게 하려면 힌트 매개 변수를 사용하여 수정 내용에 대한 정보를 전달해야 합니다.
사용 lHint
하려면 특수 힌트 값(일반적으로 비트 마스크 또는 열거형 형식)을 정의하고 문서에서 이러한 값 중 하나를 전달하도록 합니다. 사용 pHint
하려면 힌트 클래스를 CObject
파생시키고 문서에서 힌트 개체에 대한 포인터를 전달하도록 합니다. 재정의할 때 멤버 함수를 OnUpdate
사용하여 CObject::IsKindOf
힌트 개체의 런타임 형식을 확인합니다.
일반적으로 에서 직접 OnUpdate
그리기를 수행해서는 안 됩니다. 대신 디바이스 좌표에서 업데이트가 필요한 영역을 설명하는 사각형을 결정합니다. 이 사각형을 .에 전달합니다 CWnd::InvalidateRect
. 이렇게 하면 다음에 메시지를 받을 때 그리기가 WM_PAINT
발생합니다.
0이고 pHint
있는 NULL
경우 lHint
문서에서 일반 업데이트 알림을 보냈습니다. 보기가 일반 업데이트 알림을 받거나 힌트를 디코딩할 수 없는 경우 전체 클라이언트 영역을 무효화해야 합니다.
참고 항목
MFC 샘플 MDIDOCVW
CWnd
수업
계층 구조 차트
CWnd
수업
CFrameWnd
수업
CSplitterWnd
수업
CDC
수업
CDocTemplate
수업
CDocument
수업