Menu

csplitterwnd 예제

  • Uncategorized

스플리터 창, 단일 보기 클래스와 SDI 응용 프로그램. 이 모듈의 첫 번째 예인 MYMFC21에서는 이 사례를 다룹니다. 각 스플리터 창은 문서의 다른 부분으로 스크롤할 수 있습니다. 프로그래머는 최대 수평 및 수직 창 수를 결정합니다. 사용자는 런타임에 분할을 만듭니다. 작업을 보기 전에 이 예제에서 MYMFC20 단계를 살펴보겠습니다. CMymfc21Doc 클래스에 CStringArray 데이터 멤버를 추가합니다. Mymfc21Doc.h 헤더 파일을 편집하거나 ClassView를 사용합니다. 이 예제에서 사용자는 뷰를 단일 뷰 클래스에서 모두 관리하는 4개의 별도 뷰 개체가 있는 4개의 창으로 동적으로 분할할 수 있습니다. MYMFC19의 문서와 보기 코드를 사용합니다.

AppWizard를 사용하면 새 응용 프로그램에 동적 스플리터 창을 추가할 수 있습니다. SDI 프로젝트를 만듭니다. AppWizard 4 단계 대화 상자에서 고급 단추를 클릭합니다. 창 스타일 탭을 클릭하고 여기에 표시된 것처럼 분할 창 사용을 선택합니다. mymfc21View.cpp에서 OnPreparePrinting() 함수를 편집합니다. 이 함수는 인쇄 작업의 최대 페이지 수를 설정합니다. 이 예제에는 페이지가 하나만 있습니다. 재정의된 OnPreparePrinting() 함수에서 기본 클래스 DoPreparePrinting() 함수를 호출하는 것이 절대적으로 필요합니다. 다음 코드 추가: 스플리터 창을 만들 때 이러한 특수 스크롤 막대를 만듭니다.

예를 들어 행 하나, 두 개의 열 및 WS_VSCROLL 스타일이 있는 CSplitterWnd에는 두 창에서 공유하는 세로 스크롤 막대가 표시됩니다. 사용자가 스크롤 막대를 이동하면 WM_VSCROLL 메시지가 두 창으로 전송됩니다. 창이 스크롤 막대 위치를 설정하면 공유 스크롤 막대가 설정됩니다. 스플리터 창은 창에 여러 뷰를 포함하는 특별한 유형의 프레임 창으로 나타납니다. 응용 프로그램은 생성 시 창을 분할하거나 사용자가 메뉴 명령을 선택하거나 창의 스크롤 막대에서 스플리터 상자를 드래그하여 창을 분할할 수 있습니다. 창을 분할한 후 사용자는 마우스로 스플리터 막대를 이동하여 창의 상대크기를 조정할 수 있습니다. 스플리터 윈도우는 SDI 및 MDI 응용 프로그램에서 모두 사용할 수 있습니다. 이 모듈에서는 스플리터 창의 예를 볼 수 있습니다. 이 예제에서는 직렬화가 중요하지 않지만 다음 함수는 문자열을 직렬화하는 것이 얼마나 쉬운지 보여 줍니다. 응용 프로그램 프레임워크는 아카이브에서 로드하기 전에 DeleteContents() 함수를 호출하므로 배열을 비우는 것에 대해 걱정할 필요가 없습니다. 다음 코드 추가: 스플리터 창이 없는 SDI 응용 프로그램, 여러 보기 클래스를 추가합니다.

MYMFC21C 예제에서는 이 사례를 보여 줍니다. 사용자는 메뉴에서 선택하여 보기 클래스를 전환합니다. 이 문서에서는 뷰를 삭제하고 다시 만들지 않고 스플리터 창에서 여러 뷰 간에 전환하는 방법을 설명합니다. 뷰를 만들고 파괴하는 것은 비효율적이며 종종 응용 프로그램의 디자인을 방해하지만 뷰전환의 유일한 예는 그렇게하고 있습니다! CSplitterWnd 대체 클래스를 만들어 창당 여러 뷰를 가볍고 사용하기 쉬운 방법으로 추가했습니다. 참고: 이 클래스는 동적 스플리터가 아닌 정적 스플리터전용입니다. 정적 분할기의 개별 창은 종종 다른 클래스에 속합니다. 정적 스플리터 창의 예는 그래픽 편집기와 Windows 파일 관리자를 참조하십시오. MYMFC18 예제를 제외하고 이 책에서 지금까지 본 각 프로그램에는 문서에 하나의 보기만 첨부되어 있습니다. Microsoft Windows 기반 워드 프로세서를 사용한 경우 문서의 여러 부분에서 두 개의 창을 동시에 여는 것이 편리합니다. 두 창 모두 일반 뷰를 포함하거나 한 창에 페이지 레이아웃 뷰가 포함될 수 있으며 다른 창에는 개요 보기가 포함될 수 있습니다. CHolderView의 setWnd 메서드는 활성 컨트롤을 설정합니다.

그것은 유일한 사람이어야한다고하지 않습니다. 예를 들어 뷰에서 서로 다른 컨트롤 간에 전환할 수 있습니다. 슬레이브 컨트롤에 대해 다른 모양을 추가한다고 가정해 보세요. 목록 및 편집을 할 수 있습니다. 뷰에 목록 상자와 편집 컨트롤을 만들고 적절한 이벤트가 발생하면 setWnd로 활성 컨트롤을 변경하고 컨트롤이 변경됩니다.

Search