. 기능 소개

MRU Most Recently Used의 약자이며 최근 읽은 파일의 목록이라는 뜻이다. 파일 입출력을 하는 프로그램들은 대상 파일을 수시로 바꿔 가며 작업을 하는데 최근에 열었던 파일을 다시 열 확률이 아주 높다. 그래서 메뉴에 최근 파일의 목록을 보여주고 메뉴를 통해 곧바로 최근 파일을 다시 열 수 있도록 하는 기능을 제공하는데 파일열기 대화상자보다는 훨씬 더 신속하게 원하는 파일을 열 수 있어 편리하다.

워드프로세서나 워크 시트 등의 사무용 프로그램은 물론이고 비주얼 스튜디오도 이 기능을 제공한다. 한꺼번에 100개의 프로젝트를 동시에 진행하지는 않으므로 보통 서너 개의 프로젝트를 교대로 열어 가면서 작업을 하게 되는데 이때 MRU 기능은 굉장한 편리를 제공한다. 메뉴를 통하면 원터치로 작업중인 프로젝트를 열 수 있기 때문이다. 사용자의 편의를 위한 꽤 고급 기능이지만 이 기능도 워낙 일반화되어 있는데다 MFC 같은 고급툴은 이 기능을 공짜로 지원하므로 요즘은 MRU를 제공한다고 해서 특별한 자랑거리가 되지 못한다.

MRU 기능의 개요는 무척 간단하다. 파일을 열 때마다 파일의 경로를 기억해두었다가 종료할 때 그 목록을 레지스트리에 저장한다. 그리고 다음 번 실행할 때 다시 목록을 읽어와 메뉴항목에 보여주고 사용자가 이 메뉴항목을 선택하면 기억하고 있던 파일을 다시 열기만 하면 된다. 레지스트리 입출력과 메뉴 관리 정도의 기능이면 충분히 구현할 수 있으므로 그다지 까다로운 부분이 없는 셈이다.

이 기능은 아주 일반화되어 있으므로 차후의 재사용성을 고려하여 클래스로 작성해보기로 하자. 문자열 히스토리를 관리하는 CHistory 클래스와 MRU 기능을 제공하는 CMru 클래스를 만들어 볼 것이다. 두 클래스는 사용 용도가 많아 잘 만들어 놓으면 실무 프로젝트에 활용할 수 있다. 쉽게 가져다 쓸 수 있도록 일반적으로 작성했는데 재사용성을 고려했다는 것은 다른 프로젝트에 적용하기 쉽다는 뜻이지 그대로 가져다 쓸 수 있다는 얘기는 아니다. 수정없이 쓸 수 있는 경우도 있지만 프로그램의 상황에 따라 약간씩은 손을 볼 필요도 있다.

두 클래스 모두 메인 프로그램의 기능이라기보다는 기능을 보조하는 역할을 하므로 Util.h에 클래스 정의를 선언하고 Util.cpp에 코드를 작성하도록 하자.