. 살펴보기 모드

살펴보기 모드는 파일을 빨리빨리 확인하고자 할 때 사용하는 모드이다. 이 모드에서는 더블클릭하지 않고 노드에서 파일을 선택하기만 해도 파일을 즉시 열어 준다. 단순히 파일 내용을 살펴 보기 위해 사용하므로 새로 창을 만들지 않고 기존 창에 파일을 연다. , 열려 있는 창이 없거나 이 창의 내용이 편집되었으면 불가피하게 새로운 창을 만들어야 한다. OpenFromFile 함수를 다음과 같이 수정한다.

 

BOOL OpenFromFile(TCHAR *Path,BOOL bReadOnly/*=FALSE*/,BOOL bBrowse/*=FALSE*/)

{

     HWND hChild;

     SInfo *pSi;

     BOOL bNew=TRUE;

     TCHAR Mes[512];

 

     hChild=FindChildWithFile(Path);

     if (hChild) {

          SendMessage(g_hMDIClient,WM_MDIACTIVATE,(WPARAM)hChild,0);

          return TRUE;

     }

 

    if (!bBrowse) {

        if (g_ChildNum==1) {

           bNew=FALSE;

           hChild=GetWindow(g_hMDIClient,GW_CHILD);

           pSi=(SInfo *)GetWindowLong(hChild,0);

           if (pSi->Ae.GetModified() || strncmp(pSi->NowFile,"이름없음",8)) {

               bNew=TRUE;

           }

        }

    } else {

        bNew=FALSE;

        hChild=(HWND)SendMessage(g_hMDIClient,WM_MDIGETACTIVE,0,NULL);

        if (hChild==NULL) {

           bNew=TRUE;

        } else {

           pSi=(SInfo *)GetWindowLong(hChild,0);

           if (pSi->Ae.GetModified()) {

               bNew=TRUE;

           }

        }

    }

    

     if (bNew) {

          hChild=New();

          pSi=(SInfo *)GetWindowLong(hChild,0);

     }

     ....

    if (!bBrowse) {

        Mru.AddMRU(Path);

    }

     return TRUE;

}

 

살펴 보기 모드가 아닐 때는 기본 창인지의 여부에 따라 새로 창을 만들 것인지 아닌지를 판단하고 살펴 보기 모드일 때는 활성창이 있는지, 그리고 변경되었는지에 따라 새 창을 만들지를 결정한다. 활성 차일드가 하나도 없거나 있더라도 파일이 편집되었으면 새로운 편집창을 만들고 그렇지 않다면 기존 창의 문서를 닫고 새 문서를 열어 준다. 살펴 보기 모드일 때는 MRU에 등록하지 않는다.

파일 트리에서 파일을 더블클릭하면 이 파일을 여는데 방법은 아주 간단하다. GetNodePath 함수로 더블클릭된 노드의 완전 경로를 구하고 OpenFromFile 함수만 호출하면 된다. 이외에 파일 이름 변경, 파일 삭제 등의 약간의 잡스러운 기능들을 구현하고 있으며 팝업메뉴에 대부분의 기능이 공개되어 있다. 이후 파일창은 프로젝트의 목록을 보여주는 용도로도 사용된다.