MFC의 문서 보기 프레임과 문서 템플릿 간의 관계

3679 단어

문서 객체: 데이터를 저장하는 데 사용됩니다.보기 대상: 데이터를 표시하고 편집하는 데 사용됩니다.


응용 프로그램 프레임워크: 프레임워크는 서로 다른 문서 디스플레이 인터페이스를 관리하는 데 사용됩니다.예를 들어 당신은 데이터 격자 디스플레이 인터페이스가 있고 도형 디스플레이 인터페이스가 있습니다. 그들의 데이터는 모두 당신의 문서에서 나올 수 있지만 보기가 다르면 어떻게 프레임을 사용합니까?왜 보기 안 써요?인터페이스 관리를 독립적으로 꺼내기 위해서다.


문서 템플릿: MFC는 문서 / 보기 / 프레임워크를 하나로 간주합니다. 문서 / 보기 프레임워크 구조를 만드는 프로그램만 만들면 이 세 가지 종류를 만들 수 있습니다.이 작업은 응용 프로그램을 초기화할 때 완성됩니다.1: BOOL CMy Html App: InitInstance() 2: {3://.... 4: Csingle DocTemplate* pDocTemplate; 5: pDocTemplate = new Csingle DocTemplate(6: IDR MAINFRAME, 7: RUNTIME CLASS(CMYHtml Doc), 8: RUNTIME CLASS(CME CLASSS)); 10: AddDocTemplate(pDocTemplate); 11: //。。。。。。 12: }     단일 문서: 한 번에 한 개의 파일만 열 수 있습니다. 문서 형식이 얼마나 지원하는지 상관없습니다.모든 이미지 형식을 지원하는 단일 문서의 프로그램을 만들 수 있다. 단지 한 번에 한 문서만 열 수 있을 뿐이다.다중 문서: 문서 형식과 상관없이 여러 개의 파일을 열 수 있습니다.여러 개의 문서를 동시에 열 수 있는 프로그램을 만들 수도 있지만, 문서 형식만 지원합니다.문서/뷰 프레임 구조는 언제 필요합니까?  우선 MFC에서라도 문서 보기라는 프레임워크를 사용하지 않아도 된다.너는 네가 필요할 때 이런 방식을 선택할 수 있다.보기만 있고 문서가 없는 프로그램, 예를 들어 대화상자 기반 응용 프로그램을 완성할 수 있다.언제 필요하세요?당신의 데이터 층과 인터페이스 층을 분리하고 싶을 때.일반적으로 우리는 데이터에 대한 조작을 문서 클래스에 놓는다. 예를 들어 액세스, 열기, 닫기 등이다.여기서 당신은 당신의 데이터를 마음껏 조작할 수 있습니다. 만약 당신이 필요하다면 데이터에 대해 변경을 한 후에 보기에 대한 업데이트를 하면 프로그램은 당신의 데이터에 대한 변화를 프로그램의 사용자에게 보여줄 것입니다.이를 통해 알 수 있듯이 보기의 역할은 사용자와 데이터 간에 데이터 교환을 하는 인터페이스를 제공하는 것이다. 그 역할은 필요할 때 데이터를 표시하고 필요할 때 입력 인터페이스를 제공하는 것이다.사용자가 입력한 후 실제 데이터 조작은 문서 클래스에 의해 이루어진다.   그럼 프레임류는 뭘 하고 있을까요?프레임 클래스는 문서 클래스와 보기 클래스를 관리하기 위해 존재합니다.일반적으로 우리의 작업은 보기 창을 통해 이루어지고 메시지는 보기에서 수신되고 처리됩니다.그래서 메시지 매핑 정의는 일반적으로 보기에 있습니다.그러나 한 응용 프로그램이 동시에 여러 개의 보기를 가지고 있고 현재 활동 보기가 메시지를 처리하지 않으면 메시지가 프레임 창으로 전송됩니다.또한 프레임 창은 비창 메시지를 쉽게 처리할 수 있습니다.다시 말하면 전형적인 단일 문서 프로그램의 생성 과정(완전하지 않고 유용한 것만 선택)   1. CwinApp 대상이 구축되고 이 대상은 전역적이며 하나밖에 없다. 이름은 theApp이다.이 때 당신은 등록표에 대한 작업을 완성할 수 있습니다. (만약 등록표를 수정하지 않는 소프트웨어를 쓰고 싶다면 여기서 작업을 해야 합니다.) 2, InitInstance () 함수에 문서 템플릿을 만들고, 문서 템플릿은 CruntimClass 정적 구성원 지침으로 구성 파라미터를 만들 수 있습니다.3. MFC 프레임워크의 기본 명령행 매개 변수를 실행합니다.Cmd1에서 새 파일을 생성합니다.(명령줄 매개변수가 없으면 기본 ID FILE NEW) 4, 문서 템플릿 인스턴스는 세 가지 클래스의 동적 생성 정보를 기반으로 문서, 뷰, 프레임을 만듭니다.5. 문서, 보기, 프레임을 초기화한다.       문서, 보기, 프레임 간의 상호작용.위의 일반적인 단일 문서 프로그램의 생성 과정을 통해 알 수 있듯이 하나의 완전한 응용은 일반적으로 네 가지 종류로 구성된다.  CWinApp 애플리케이션 클래스, CFrameWnd 프레임 클래스, CDocument 문서 클래스, CView 뷰 클래스. 나는 네 가지 종류에서 자주 사용하는 구성원 함수를 열거할 것이니, 모두가 보면 곧 알 수 있다.하지만 매개 변수,반환 값이 나열되지 않으므로 MSDN에서 자세히 볼 수 있습니다.몇 개의 중요한 허함수도 설명하지 않았다.다들 보세요.전역 함수 AfxGetApp을 통해 CWinApp 응용 프로그램 종류의 전역 대상theApp.CwinApp1: 데이터 구성원: 2: mpszAppName 응용 프로그램 이름 3: mpszExeName 실행 파일의 이름 4: mpszProfileName INI 파일의 이름 5: mpszRegistryKey 레지스트리 또는 INI 파일의 KEY 6: mhInstance 인스턴스의 핸들 7: mpMainWnd는 프레임 창 포인터 8: 구성원 함수: 9: InitInstance()// 초기화 10: ParseCommandLine()// 명령행 해석 처리 완료 11: CFrameWnd 12: GetActiveDocument ()// 현재 활성 문서 포인터 획득13: GetActiveView()// 현재 활성 포인터 획득14: SetactiveView()// 현재 보기를 활성 보기로 설정 15: CDocument 16: OnNew Document()17: OnOpenDocument()18: OnSaveDocument()19: OnFileClose()20://이상 문서에 대한 작업 21: GetFirstViewPosition()// 문서 대상 체인 테이블의 첫 번째 문서 위치 22: GetNextView()// 다음 23://이상 문서와 관련된 모든 보기 24: GetDocTemplate() 문서 템플릿 포인터 25: AddView()// 보기26 추가: RemoveView()// 보기27 삭제: Update AllView()// 모든 보기를 업데이트합니다28: Cview 29: GetDocument()에 해당하는 문서 포인터가 있습니다.여러분은 MSDN을 보십시오.CWinApp 응용 프로그램 클래스, CFrameWnd 프레임워크 클래스, CDocument 문서 클래스, CView 보기 클래스의 클래스 구성원을 직접 볼 수 있습니다.마지막으로 흔히 볼 수 있는 몇 가지 문제를 말해 봅시다. 1. 왜 대화 상자의 응용 프로그램에서 문서 템플릿을 발견하지 못합니까?기본 대화상자 프로그램은 문서/보기 프레임 구조를 사용하지 않습니다. 2. 만약에 내가 데이터베이스를 데이터 원본으로 사용한다면 문서 클래스가 필요하지 않아도 된다는 것을 의미하는가?너 자신을 보아라, 그러나 나는 사용을 건의한다.문서, 보기라는 뚜렷하고 편리한 구조와 삼자 간의 상호작용을 완성할 수 있기 때문이다.http://www.cnblogs.com/tianjinquan/archive/2011/01/18/1938568.html

좋은 웹페이지 즐겨찾기