- 새 프로젝트 구성시, 저는 VisualStudio 2022 Preview를 사용 중이어서, 저 옵션을 체크했습니다.(안하면 버그 나올수도)
- 여러문서 : 엑셀같은 프로그램처럼 여러페이지를 사용할 때 설정
- 단일문서 : 메모장 같이 한 페이지만 사용할 때 설정
- 기본스타일 설정 : MFC standard
- 지금은 .raw만 사용하니까 파일확장명은 raw
openImage() -> Doc::OnOpenDocument()
saveImage() -> Doc::OnSaveDocument()
displayImage() -> View::OnDraw()
- Document클래스에는 보이지않는 기능을 넣음
- View클래스(메뉴)에는 눈에 보여주는 기능을 넣음
- 두 클래스를 사용하려면 파이프로 서로 호출해줘야 함
보기 -> 클래스 뷰
- 해당 클래스에 우클릭 후 전역변수 선언
- Doc 에는 내부 친구, View 에는 보여주는 친구들 넣을 것임.
- 만약에 변수나 함수를 잘못 추가했다면(오타 등등), 그 친구들 버리고, 새로운 이름의 친구들을 만들어야한다. (MFC 특성상 고치기가 정말 힘듦)
(전역 변수 추가완료, 초기화 시켜줘야 한다.)
- OnOpenDocument() 만들기.
클래스뷰 아래 지우개처럼 생긴 친구 클릭- 해당 함수에서 Add 로 재정의 해서 사용하면 됨
- C를 C++에 맞게 수정 후 코드추가
- 확실히 바뀐 부분들( 파일 열고 닫기 )
CFile rfp; // File * rfp; rfp.Open(lpszPathName, CFile::modeRead | CFile::typeBinary); // rfp =fopne("경로", "rb"); for (int i = 0; i < m_inH; i++) rfp.Read(m_InputImage[i], m_inW);//fread(m_InputImage[i], sizeof(unsigned char), m_inW, rfp); rfp.Close(); //fclose(rfp); unsigned long fsize = rfp.GetLength();
- OnDraw()부분 바꾸기
- 메소드 잠금되어있던것 풀고 코드 추가* 구현코드 추가하기.
void CImageMFC1View::OnDraw(CDC* pDC) { CImageMFC1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다. int px; for (int i = 0; i < pDoc->m_inH; i++) { for (int k = 0; k < pDoc->m_inW; k++) { px = pDoc->m_InputImage[i][k]; pDC->SetPixel(k + 5, i + 5, RGB(px, px, px)); } } for (int i = 0; i < pDoc->m_inH; i++) { for (int k = 0; k < pDoc->m_inW; k++) { px = pDoc->m_OutputImage[i][k]; pDC->SetPixel(k + pDoc->m_inH + 5, i + 5, RGB(px, px, px)); } } }
- 해당 클래스에 우클릭 후 전역변수 및 함수 선언
(출력이 된다~!)
- 리소스 에서 기능을 넣어보자
- 리소스에 ID 부여 꼭 해야한다(함수이름으로 들어간다)
- 우클릭 후 이벤트처리기 추가하기(순서 : View에 함수추가 후 Doc에 기능부여)
- View 클래스에서 메뉴 만드는 부분 (pDoc로 Doc와 연결돼 있다)
- Doc 클래스에서 기능 구현
((위코드와 다른코드입니다~)와~ 된다!!)