Software/Programming2012. 8. 9. 16:47

SDI나 MDI 구조의 경우 문서 열기를 재정의 해서 사용해야 할 때가 있다.

이럴때는...

1. XXXXAPP.cpp 파일을 열어서

코드의 가장 위에 있는 메시지를 아래와 같이 다시 정의한다.

  1. BEGIN_MESSAGE_MAP(CCudaTestApp, CWinAppEx)    
  2. ON_COMMAND(ID_APP_ABOUT, &CCudaTestApp::OnAppAbout)   
  3. // 표준 파일을 기초로 하는 문서 명령입니다.    
  4. ON_COMMAND(ID_FILE_NEW, &CWinAppEx::OnFileNew)        
  5. //기존의 OnFileOpen 임.   
  6. //ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen)    
  7. //OnOpenDocument 함수를 호출할 때, 자신이 만든 함수를 호출하도록      
  8. //ID_FILE_OPEN를 사용자 임의로 재정의 한다.   
  9. ON_COMMAND(ID_FILE_OPEN, &CCudaTestApp::OnFileOpen)           
  10. // 표준 인쇄 설정 명령입니다.    
  11. ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinAppEx::OnFilePrintSetup)     
  12. ON_COMMAND(ID_FILE_OPEN, &CCudaTestApp::OnFileOpen)  
  13. END_MESSAGE_MAP()  


2. 클래스 위자드나 이벤트 재정의에서 다음과 같이 OnFileOpen 함수를 추가해 준다.



3. OnFileOpen함수 내부를 아래와 같이 작성. (원하는 파일 다이얼로그를 만들기 위한 코드를 여기에 작성한다)

  1. void CCudaTestApp::OnFileOpen(){      
  2. // TODO: 여기에 명령 처리기 코드를 추가합니다.    
  3. char filter[] = "Raw files (*.raw)|*.raw||";      
  4. CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, filter);      
  5.    if(dlg.DoModal() == IDOK){         
  6.      for(POSITION pos = dlg.GetStartPosition(); pos !=NULL;)              
  7.           OpenDocumentFile(dlg.GetNextPathName(pos));     
  8.    }  
  9. }  


현재 코드는 여러 파일을 동시에 읽어들일 수 있도록 해놓은 상태이다.

4. 컴파일 후 실행하면 원하는 파일 다이얼로그를 볼 수 있다.

'Software > Programming' 카테고리의 다른 글

MFC의 흐름  (0) 2012.08.10
도큐먼트 뷰 객체 설명  (0) 2012.08.10
CFileDialog  (0) 2012.08.10
MFC에서 유니코드 관련해서 문제가 생겼다.  (1) 2012.08.09
게시판 프로그램  (0) 2011.10.11
Posted by 십자성군