[MFC :: OpenGL] DXF :: Part 1 (옮김)

심플디 2014.04.25 12:43 조회 수 : 1545




ProjectOpenGL (2).exe




MFC에서 파일 입출력을 어떻게 할 것인가를 다룸.













<그림 1 :: 좌표 파일> 


<그림 1>은 좌표를 파일에 담은 모습을 하고 있다.

txt파일로 옮기되, 확장자는 ~.dat 로 바꿔준다.

아마 모든 파일 변환은 <그림 1>의 좌측에 보이는 ~.dat 파일로 한번씩 변화 될 것이다.


<그림 2 :: Doc 클래스의 첫 수정>


Frame 클래스는 프로그램의 제목을 바꾸기 위해서, View 클래스는 OpenGL의 성능을 향상시키기 위해서 변환시켜보았지만,

Docu 클래스의 조작은 처음일 것이다.

일반적으로 Docu 클래스는 문서의 임시 저장과 파일의 Input / Output을 담당한다. (사실 필자도 구체적으로자세하게는 모른다...)

여기까지 하고, 첨부파일에있는 실행파일을 실행시키고, 저장과 읽기를 해보자. (새로 만들기가 아니다!!)

코드에 입력한 대로 메시지박스가 뜨는 것을 볼 수 있다...!


 <그림 3 :: 직렬화 공부>


<그림 3>은 이 기능 한번 구현해보고자 책을 독학한 흔적을 보여주고 있다...

수 백 페이지를 몇 일만에 독학할 수 있었던 속도의 근본은, 김동근 교수님께 빡시게 배워놓은 API 때문인 것 같다...


아무튼 필자는 사실 이 직렬화(Serialize) 개념을 진즉에 알고 있었지만, 직접 시현해 보기는 처음이다. 

(물론 노예처럼 따라해본적은 있다. 요컨데, 직접 이 기능을 내 입맛대로 사용하는 경험은 처음이라는 것이다.)

알고 있었으면서 왜 사용하지 않고 차일 피일 미루다가 이제야 시도하느냐!! 란 질문에,

"C를 알고 있지만 C++, API, MFC, OpenGL까지 해야 한다는 사실을 접했을 때의 그 귀찮음과 절망감과 맞먹는 감정을 느꼈기 때문." 이라고 답하겠다.

똥을 무서워서 피하나? 드러워서 피하지... 

난 여지껏 이 영역에 손대는 것에 그것과 비슷한 감정을 갖고 있었다.

그 감정의 근본은 최근에 API로 Drag & Drop을 구현해 보았기 때문... 이라고 할 수 있겠다. ㅋㅋㅋ

쉬울 줄 알았는데, 알 수 없는 코드들을 한줄한줄 계속 추가하게 되고, 알 수 없는 에러를 수차례 봐야 했던 그 더러운 경험 ㅋㅋㅋ


각설하고 다시 진도를 진행하겠다.

일단 Nurbs curve는 u, v의 좌표개념을 사용하면서, x,y,z 좌표개념을 포함하고 있다.

즉 좋든 싫든 좌표 개념이 u, v로 나와야 하고, 가능하다면 3D scanning data는 예측 할 수 있는 숫자로 정렬 되어 있어야 한다.


 <그림 4 :: 임시 수정>


<그림 4>로 Doc 클래스의 코드를 수정한 모습을 볼 수 있다.

MFC를 조금 아시는 분이 보면 상당히 의아해 할 수 있는 모습일텐데, 왜 MFC가 제공하는 CArchive 클래스를 제대로 활용하지 않았냐면,

txt 파일 포맷으로 제대로 출력이 나가지 않았기 때문이다.


<그림 5 :: 출력 내용 "신동석 rn shin">


<그림 5>는 CArchive 클래스를 활용하여 문자열을 출력했던 파일을 열은 모습을 보여주고 있다.

전체적으로 Unicode의 영향을 받아서 그런지, 알파벳은 한칸씩 띄워져 있는 모습을 볼 수 있으며 한글은 알아볼 수도 없는 형태가 되었다.

Unicode에서 unUnicode의 변환이 그리 녹록하지 않다는 증거이다. ( CArchive 클래스의 활용은 정말 함들군요 -_- )

그래서 CArchive 클래스는 파일의 기본 외적인 것(파일명, 파일경로, 파일 확장자)의 정보를 얻을때만 사용하고

내부적으로는 CFile 클래스를 사용하기로 했다.


<그림 6 :: Serialize 함수의 수정>


<그림 6>은 저장 및 불러오기에 대한 과정의 수정된 코드를 보여주고 있다.

CArchive 클래스에 전적으로 의존하지 않고, CFile 클래스에 의존하는 모습을 볼 수 있다.

필자도 상당히 이 상황이 어이가 없지만, 편의를 위해서는 이렇게 할 수 밖에 없다.


<그림 6>에서 수정된 코드의 내용은 다음과 같다.


저장 : "인증샷 (한줄 넘고) 신동석 "을 출력한다.

불러오기 : 해당파일의 확장자까지 포함된 제목을 메시지박스로 띄운다.


 

<그림 7 : Open>


 

<그림 8 : Open 결과>


 

<그림 9 : 저장>


  

 <그림 10 : 저장 결과>


<그림 1>의 방식을 전혀 사용하지 않아서 상당히 무안한데, 

아무튼 파일 입출력에 대한 스트림에 대한 이해는 이 정도로 끝내도 무난 할 것 같다.

번호 제목 글쓴이 날짜 조회 수
공지 본 게시글의 첨부파일 권한 심플디 2014.08.22 2376
47 [MFC :: OpenGL] 컴공 수업 발표 자료 (옮김) [2] 심플디 2014.04.25 2878
46 [MFC :: OpenGL] Project 시즌 2 후기 (옮김) 심플디 2014.04.25 1568
45 [MFC :: OpenGL] File output (옮김) 심플디 2014.04.25 1500
44 [MFC :: OpenGL] Tool bar(툴바) 편집방법 (옮김) 심플디 2014.04.25 1821
43 [MFC :: OpenGL] IntroPage (옮김) file 심플디 2014.04.25 1500
42 [MFC :: OpenGL] IPC 적용 (옮김) file 심플디 2014.04.25 1560
41 MFC :: OpenGL] ProjectMFCReport 와꾸짜기 (옮김) 심플디 2014.04.25 1681
40 [MFC :: OpenGL] Data Dialog 와꾸짜기 (옮김) 심플디 2014.04.25 1710
39 [MFC :: OpenGL] 시즌 2 개요 (옮김) file 심플디 2014.04.25 1499
38 [MFC :: OpenGL] Project 시즌 2 시작 (옮김) [1] 심플디 2014.04.25 1504
37 [MFC :: OpenGL] Project 시즌 1 후기 (옮김) file 심플디 2014.04.25 1566
36 [MFC :: OpenGL] Mesh :: Part 2 (옮김) [1] file 심플디 2014.04.25 1533
35 [MFC :: OpenGL] Mesh :: Part 1 (옮김) file 심플디 2014.04.25 1584
34 [MFC :: OpenGL] DXF :: Part 5 (옮김) file 심플디 2014.04.25 1574
33 [MFC :: OpenGL] DXF :: Part 4 (옮김) file 심플디 2014.04.25 1469
32 [MFC :: OpenGL] DXF :: Part 3 (옮김) file 심플디 2014.04.25 1453
31 [MFC :: OpenGL] DXF :: Part 2 (옮김) file 심플디 2014.04.25 1503
» [MFC :: OpenGL] DXF :: Part 1 (옮김) file 심플디 2014.04.25 1545
29 [MFC :: OpenGL] Proposal 및 앞으로의 계획 (옮김) 심플디 2014.04.25 1539