OnfileOpen 재정의

OnfileOpen함수의 처리 과정

  1. 파일 열기 다이얼로그 박스를 띄운다.
  2. 뷰를 선택한다
    1. MDI라면 Child Classdml Object와 View Object를 만든다.
    2. SDI라면 이미 만들어져 있는 View를 사용한다
  3. Document Class의 Object생성한다.
  4. 파일의 내용을 읽기 위해서 OnOpenDocumnet Method 호출
  5. View Class의 OnInitialUpdate Function 호출

예제

 void CDrawGraphApp::OnFileOpen()
{
	char szFilter[] = "TEXT File(*.txt)|*.txt|  Allfile(*.*)|*.*||";	//Filter 설정
 
	CFileDialog m_FileOpenDialog(TRUE,  NULL,  NULL, 
		OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT, szFilter);		//MultiSelect 적용됨, 
	if( m_FileOpenDialog.DoModal()==IDOK)					//Ok
	{
		POSITION FilePosition = m_FileOpenDialog.GetStartPosition();	//Multi Choice를 넘겨줌
		while( FilePosition ) 
			OpenDocumentFile( m_FileOpenDialog.GetNextPathName(FilePosition) );
	}
}

→ OnfileOpen재정의 후에 (Application) WinApp의 OnfileOpen의 Message Map을 주석 처리 해야함. 이것때문에 많이 힘들었음

BOOL CDrawGraphDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
	if (!CDocument::OnOpenDocument(lpszPathName))
		return FALSE;
 
	CPoint Temp;
	fstream File;
	File.open(lpszPathName,ios::in);
	while(File>>Temp.x>>Temp.y)
	{
		aSamples.Add(Temp);
	}
	File.close();
 
	return TRUE;
}

→ 이건 자기 스스로 적용시키는 부분인듯 나는 점을 읽어 오는 부분이라 이렇게 함
Doc Class에서이렇게 하니깐 윈도우 프로그램의 기본적인 Document&View 패턴이 적용 쉬운듯 함(Observe Pattern?)

History

  • 2008/07/04 16:44 By mukchik. 등록 → 출처 : 인터넷, 윈프 책 참고
  • 2008/07/04 17:40 By mukchik. 추가 → OnOpenDocument Code추가
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki