다음을 통해 공유


연습: 새 셸 MFC 컨트롤 사용

이 연습에서는 파일 탐색기와 비슷한 응용 프로그램을 만듭니다.두 개의 창이 포함된 창을 만듭니다.왼쪽된 창에서 포함 됩니다는 CMFCShellTreeCtrl 바탕의 계층적 보기에 표시 되는 개체입니다.오른쪽 창에 들어갈는 CMFCShellListCtrl 왼쪽된 창에서 선택 된 폴더에 파일이 표시 됩니다.

사전 요구 사항

이 연습을 설정한 가정 Visual Studio 사용 하도록 일반 개발 설정.다양 한 개발 설정에서 일부 사용 하는 경우 Visual Studio 이 연습에서 사용 하는 windows 기본적으로 표시 될 수 있습니다지 않습니다.

MFC 응용 프로그램 마법사를 사용 하 여 새 MFC 응용 프로그램을 만들려면

  1. 사용은 MFC 응용 프로그램 마법사 새 MFC 응용 프로그램을 만들 수 있습니다.마법사를 실행 하는 파일 메뉴 선택 를 선택한 다음 프로젝트.새 프로젝트 대화 상자가 표시 됩니다.

  2. 새 프로젝트 대화 상자에서 확장은 Visual C++ 에서 노드는 프로젝트 형식 창 및 선택 MFC.그런 다음에 템플릿 창에서 MFC 응용 프로그램.같은 프로젝트에 대 한 이름을 입력 MFCShellControls 를 클릭 하 고 확인.MFC 응용 프로그램 마법사 표시 됩니다.

  3. MFC 응용 프로그램 마법사 대화 상자를 클릭 다음.응용 프로그램 종류 창 표시 됩니다.

  4. 응용 프로그램 종류 창, 응용 프로그램 종류, 지우기는 탭 문서 옵션.그런 다음 선택 단일 문서 선택 하 고 문서/뷰 아키텍처 지원.아래에서 프로젝트 스타일선택 Visual Studio에서 비주얼 스타일 및 색 드롭 다운 목록을 선택 Office 2007 (파랑 테마).다른 모든 옵션은 그대로.클릭 다음 표시 하는 복합 문서 지원 창.

  5. 복합 문서 지원 창에서 없음.클릭 다음 표시 하는 문서 템플릿 문자열 창.

  6. 변경 하지는 문서 템플릿 문자열 창.클릭 다음 표시 하는 데이터베이스 지원 창.

  7. 데이터베이스 지원 창에서 없음 이 응용 프로그램에서 데이터베이스를 사용 하지 않기 때문입니다.클릭 다음 표시 하는 사용자 인터페이스 기능 창.

  8. 사용자 인터페이스 기능 창에서 했는지는 메뉴 모음 및 도구 모음 사용 옵션을 선택한.다른 모든 옵션은 그대로.클릭 다음 표시 하는 고급 기능 창.

  9. 고급 기능 창, 고급 기능만 선택 ActiveX 컨트롤공용 컨트롤 매니페스트.아래에서 고급 프레임 창만 선택은 탐색 창 옵션.그러면 마법사 창의 왼쪽 창에 CMFCShellTreeCtrl 이미 포함 합니다.클릭 다음 표시 하는 생성 클래스 창.

  10. 우리를 변경 하지 않습니다는 생성 클래스 창.따라서 클릭 완료 새 MFC 프로젝트를 만들 수 있습니다.

  11. 응용 프로그램을 빌드하고 실행하여 제대로 만들어졌는지 확인합니다.응용 프로그램에서 작성 하는 빌드 메뉴 선택 솔루션 빌드.성공적으로 응용 프로그램을 빌드하는 경우 응용 프로그램을 실행을 선택 하 여 디버깅 시작 에서 디버그 메뉴.

    표준 메뉴 모음, 표준 도구 모음, 표준 상태 표시줄 및 Outlook 표시줄 왼쪽 창에 있는 응용 프로그램 마법사를 자동으로 만듭니다를 폴더 보기와 일정 보기.

문서 보기로 셸 목록 컨트롤을 추가 하려면

  1. 이 단원에서는 인스턴스를 추가 CMFCShellListCtrl 보기 마법사를 만든.보기 헤더 파일에서 Mfcshellcontrolsview.h를 두 번 클릭 하 여 열을 솔루션 탐색기.

    찾아는 #pragma once 지시문의 헤더 파일 위쪽.헤더 파일을 포함 하도록이 코드를 아래 추가 바로 CMFCShellListCtrl:

    #include <afxShellListCtrl.h>
    

    이제 형식의 멤버 변수를 추가 합니다. CMFCShellListCtrl.먼저, 헤더 파일에서 다음 메모를 찾습니다.

    // Generated message map functions
    

    즉시 해당 주석 위에이 코드를 추가 합니다.

    private:
        CMFCShellListCtrl m_wndList;
    
  2. MFC 응용 프로그램 마법사 이미 만든는 CMFCShellTreeCtrl 개체에 CMainFrame 클래스를 매우 유사 하지만 보호 된 멤버입니다.나중에이 개체에 액세스할 수 우리.따라서 이제는 접근자를 만듭니다.MainFrm.h 헤더 파일을 두 번 클릭 하 여 열을 솔루션 탐색기.다음 메모를 찾습니다.

    // Attributes
    

    바로 그 아래에 다음 메서드 선언을 추가 합니다.

    public:
        CMFCShellTreeCtrl& GetShellTreeCtrl();
    

    그런 다음에 두 번 눌러 MainFrm.cpp 소스 파일을 엽니다는 솔루션 탐색기.파일 맨 아래에 다음 메서드 정의 추가 합니다.

    CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl()
    {
        return m_wndTree;
    }
    
  3. 우리를 업데이트 하는 이제는 CMFCShellControlsView 를 처리 하는 클래스는 WM_CREATE windows 메시지.MFCShellControlsView.h 헤더 파일을 열고이 코드 줄을 클릭 합니다.

    class CMFCShellControlsView : public CView
    

    다음에 속성 창 클릭의 메시지 아이콘.원하는 찾을 때까지 아래로 스크롤하여는 WM_CREATE 메시지입니다.드롭다운 목록 옆에서 WM_CREATE, <Add> OnCreate.이 메시지 처리기를 만들고 자동으로 MFC 메시지 맵을 업데이트 합니다.

    OnCreate 우리는 이제 create 메서드 우리의 CMFCShellListCtrl 개체입니다.찾기는 OnCreate 메서드 정의 Mfcshellcontrolsview.cpp의 소스 파일 및 구현에는 다음 코드로 바꿉니다:

    int CMFCShellControlsView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        if (CView::OnCreate(lpCreateStruct) == -1)
            return -1;
    
        CRect rectDummy (0, 0, 0, 0);
        m_wndList.Create(WS_CHILD | WS_VISIBLE | LVS_REPORT,
            rectDummy, this, 1);
    
        return 0;
    }
    
  4. 이전 단계를 반복 하지만 WM_SIZE 메시지입니다.그러면 사용자는 응용 프로그램 창의 크기를 변경할 때마다 다시 그릴 수 있도록 응용 프로그램 보기.교체에 대 한 정의 OnSize 메서드에 다음 코드를:

    void CMFCShellControlsView::OnSize(UINT nType, int cx, int cy)
    {
        CView::OnSize(nType, cx, cy);
        m_wndList.SetWindowPos(NULL, -1, -1, cx, cy,
            SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
    }
    
  5. 연결 하는 것이 마지막 단계는 CMFCShellTreeCtrlCMFCShellListCtrl 를 사용 하 여 개체의 CMFCShellTreeCtrl::SetRelatedList 메서드.이 메서드를 호출한 후에 CMFCShellListCtrl 에서 선택한 항목의 내용을 자동으로 표시 됩니다 있는 CMFCShellTreeCtrl.우리가 이렇게 됩니다 OnActivateView 에서 재정의할 메서드를 CView::OnActivateView.

    MFCShellControlsView.h 헤더 파일에서 안에 CMFCShellControlsView 클래스 선언, 다음 메서드 선언을 추가:

    protected:
        virtual void OnActivateView(BOOL bActivate,
            CView* pActivateView,
            CView* pDeactiveView);
    

    그런 다음이 메서드를 정의 MFCShellControlsView.cpp 소스 파일을 추가 합니다.

    void CMFCShellControlsView::OnActivateView(BOOL bActivate,
        CView* pActivateView,
        CView* pDeactiveView) 
    {
        if (bActivate && AfxGetMainWnd() != NULL)
        {
            ((CMainFrame*)AfxGetMainWnd())->GetShellTreeCtrl().SetRelatedList(&m_wndList);
        }
    
        CView::OnActivateView(bActivate, pActivateView, pDeactiveView);
    }
    

    우리 메서드를 호출 하기 때문에 CMainFrame 해야 우리 클래스 추가 #include MFCShellControlsView.cpp 소스 파일 맨 위에 있는 지시문:

    #include "MainFrm.h"
    
  6. 응용 프로그램을 빌드하고 실행하여 제대로 만들어졌는지 확인합니다.응용 프로그램에서 작성 하는 빌드 메뉴 선택 솔루션 빌드.응용 프로그램을 성공적으로 구축 하는 경우 실행을 선택 하 여 디버깅 시작 에서 디버그 메뉴.

    이제 선택한 항목의 세부 사항을 볼 수 있습니다는 CMFCShellTreeCtrl 보기 창에서입니다.노드를 클릭할 때의 CMFCShellTreeCtrl, CMFCShellListCtrl 자동으로 업데이트 됩니다.마찬가지로 폴더를 두 번 클릭 하는 경우는 CMFCShellListCtrl, CMFCShellTreeCtrl 자동으로 업데이트 합니다.

    오른쪽 트리 컨트롤에서, 목록 컨트롤에 있는 항목을 클릭 합니다.실제 파일 탐색기를 사용할 때 처럼 동일한 상황에 맞는 메뉴를 얻을 수 있습니다.

다음 단계

  • 마법사와 Outlook 표시줄을 만든는 폴더 창 고는 일정 창.이 것에 의미가 없는 일정 창 탐색기 창에서.따라서 이제 해당 창을 제거 합니다.

  • CMFCShellListCtrl 지원 같은 다른 모드에서 파일을 보는 큰 아이콘, 작은 아이콘, 목록, 및 정보.이 기능을 구현 하는 응용 프로그램을 업데이트 합니다.Hint: see Visual C++ 샘플.

참고 항목

기타 리소스

연습 (MFC)