파일 불러오기/저장하기
(CDib 클래스를 이용하여 비트맵을 불러오는 예제에서)
1. 도큐먼트에 CDib 클래스의 멤버 변수를 추가합니다. 물론 도큐먼트 클래스에서 이리저리 사용할 거니까 public으로 설정해야겠죠. 물론 그 전에 Dib.h/cpp 파일을 복사해 넣고 프로젝트에 추가하고 헤더파일 인클루드 하는 건 말 안해도 알겠죠?
public:
CDib m_dib;
2. 클래스 위저드를 열어 Class name에서 xxApp 클래스를 선택, Object IDs에서 ID_FILE_OPEN을 선택, Messages에서 COMMAND를 선택하고, Add Function 버튼을 누릅니다.
써넣을 코드는 다음처럼...
void CDibLookExApp::OnFileOpen()
{
// TODO: Add your command handler
code here
char szFilter[] = "Image
Files(*.BMP)|*.BMP|All Files(*.*)|*.*||";
CFileDialog fileDlg(TRUE, NULL,
NULL, OFN_HIDEREADONLY, szFilter);
if(IDOK == fileDlg.DoModal())
{
OpenDocumentFile(fileDlg.GetPathName());
}
}
만약 확장자를 여럿 지정하려면 다음을 참고하세요.
char szFilter[] = "Image Files(*.BMP, *.IPF)|*.BMP; *.IPF|All Files(*.*)|*.*||";
굵은 글씨 부분을 보면 알겠지만 확장자 사이를 세미콜론(;)으로 구분합니다.
3. 다시 클래스 위저드를 열어 이번에는 도큐먼트 클래스에서 OnOpenDocument를 선택합니다.
이 함수에서 인자인 lpszPathName 는 위의 OnFileOpen에서 생성한 파일 열기 다이얼로그에서 얻은, 전체 경로를 포함한 파일이름입니다. 그리고 LoadBMP() 함수는 CDIB 클래스의 멤버함수로 비트맵 파일을 불러오는 함수죠.
BOOL CDibLookExDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return
FALSE;
// TODO: Add your specialized
creation code here
if(!m_dib.LoadBMP(lpszPathName))
return FALSE;
return TRUE;
}
4. 다음은 위와 같은 방법으로 OnSaveDocument를 선택합니다.
BOOL CDibLookExDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
// TODO: Add your specialized
code here and/or call the base class
if(!m_dib.SaveBMP(lpszPathName))
return FALSE;
return CDocument::OnSaveDocument(lpszPathName);
}