본문 바로가기

Language/MFC

클래스 삭제 방법

일반적으로 프로젝트에서 cpp파일과h파일을 제외시켜도 ClassWizard 에는 클래스가 계속적으로 남아있게 된다. 이것때문에 다시 프로젝트를 만든적도 있었지...아마..-_-;
- 생성한 Class를 간단히 완전제거 MFC  (1)
프로젝트에 보면 *.clw 화일이 클래스정보를 가지고 있다.

첫번째) "FileView"에서 클래스에 대한 화일을 제거
두번째) 그 화일이 있는 폴더로 가서 화일 제거
세번째) 그 화일의 내용을 가지고 있었던 프로젝트로 가서 clw화일을 제거

그 후 다시 똑같은 이름의 클래스를 생성하시면 똑같은 클래스 이름이 있다는
에러 메세지가 안뜬다.
clw화일을 만들려면 클래스 위자드(Ctrl + w : 비쥬얼 스튜디오 6 기준)를 누른 후
clw화일이 제거된 프로젝트로 이동하시면 파일이름을 넣으라고 나오는데
그때 clw화일의 이름을 확장자와 함께 넣으시면 된다.

- 생성한 Class를 간단히 완전제거 MFC  (2)
간단한 예로 설명을 시작하자면, 우선 ClassWizard나 Workspace창에서 CTest라는 Class를 추가했다고 하자. 그런데 CTest의 Parent Class를 잘못 선택해서 생성시켜버렸을 때 어떻게 할까.? 더군다나 동일한 이름을 고수해야만 하는 경우라면...
물론 생성된 Source code를 변경해도 되지만 그리 쉽게 되지않는 경우도 있다.
이럴때 혹은 기타의 경우 생성된 클래스를 삭제한다는 것은 쉽지 않다.
FileView에서 Test.h와 Test.cpp만 삭제하면 되지 않느냐?
물론 그렇게 하면 Workspace에서 빠지지만 동일한 이름으로 class를 다시 만들수는 없을 거다. 왜냐하면 *.clw라는 화일에 그 클래스에 관한 정보가 고스란히 남아있기 때문.  한때 어렵게 알아낸 방법은 *.clw화일을 편집하는 거였는데 상당히 번거롭고 귀찮은 방법이다.

(1) FileView에서 관련 화일을 지운다. (위의 예로 치면, Test.cpp와 Test.h)
(2) 작업중인 Project Folder로 가서 Test.cpp와 Test.h 그리고 *.clw 화일 3개를 모두 지운다.
(3) ClassWizard를 실행시킨다. 그러면 *.clw화일이 삭제 되었기 때문에 클래스 정보를 알수 없다는 메세지가 나올것이다.
(4) 그리고 연달아 나오는 다이얼로그 박스에서 가장 아래에 있는 ListBox의 모든 내용을 선택해서 삭제하고 Add All버튼을 누르면 새로운 *.clw화일이 생성되면서 CTest가 빠진 모든 클래스 정보가 재구축된다.
(5) 그리고 자신이 원하는 작업(CTest의 재생성)을 하면 된다.