다음을 통해 공유


연습: MFC Scribble 응용 프로그램 (파트 1) 업데이트

이 연습에서는 리본 메뉴 사용자 인터페이스를 사용 하 여 기존 MFC 응용 프로그램을 수정 하는 방법을 보여 줍니다.Visual Studio Office 2007의 리본 메뉴 및 Windows 7 Scenic 리본을 모두 지원합니다.Ribbon 사용자 인터페이스에 대 한 자세한 내용은 참조 하십시오. 리본 MSDN 웹 사이트에서.

이 연습에서는 마우스 줄 드로잉을 만드는 데 사용할 수 있습니다 클래식 낙서 1.0 MFC 샘플을 수정 합니다.이 연습 부분에 리본 표시줄 표시 되도록 Scribble 샘플을 수정 하는 방법을 보여 줍니다.2 부 리본 표시줄에 더 많은 단추를 추가 합니다.

사전 요구 사항

Visual C++ 샘플

Visual C++ 샘플

단원

이 연습 부분 단원은 다음과 같습니다.

  • 기본 클래스를 대체합니다.

  • 비트맵을 프로젝트에 추가

  • 프로젝트에 리본 메뉴 리소스를 추가합니다.

  • 리본 표시줄의 인스턴스 만들기

  • 리본 항목을 추가합니다.

  • 응용 프로그램의 모양을 설정합니다.

기본 클래스를 대체합니다.

메뉴에 리본을 지 원하는 응용 프로그램을 지 원하는 응용 프로그램을 변환 하는 응용 프로그램, 프레임 창 및 도구 모음 클래스 업데이트 된 기본 클래스에서 파생 되어야 합니다.(원래 Scribble 샘플을 수정 하지 않는 것 좋습니다. 대신 Scribble 프로젝트 정리, 다른 디렉터리로 복사 및 다음 복사본을 수정 합니다.)

Scribble 응용 프로그램에서 기본 클래스의 이름을 바꾸려면

  1. Scribble.cpp를에서 확인 CScribbleApp::InitInstance 호출을 포함 AfxOleInit.

  2. Stdafx.h 파일에 다음 코드를 추가 합니다.

    #include <afxcontrolbars.h>
    
  3. Scribble.h에, 정의 대 한 수정에 CScribbleApp 에서 파생 되는 클래스 CWinAppEx 클래스.

    class CScribbleApp: public CWinAppEx
    
  4. Windows 응용 프로그램 사용자 기본 설정 데이터를 저장 하려면 초기화 (.ini) 파일을 사용 하면 자유 곡선 1.0 작성 되었습니다.초기화 파일을 사용 하는 대신 레지스트리에서 사용자 기본 설정을 저장 하는 자유 곡선을 수정 합니다.자료와 레지스트리 키를 설정 하려면 다음 코드를 입력 합니다. CScribbleApp::InitInstance 후에 LoadStdProfileSettings() 문.

    SetRegistryKey(_T("MFCNext\\Samples\\Scribble2"));
    SetRegistryBase(_T("Settings"));
    
  5. 다중 문서 인터페이스 (MDI) 응용 프로그램의 주 프레임 이상에서 파생 되는 CMDIFrameWnd 클래스입니다.대신이 개체는 CMDIFrameWndEx 클래스입니다.

    Mainfrm.h과 mainfrm.cpp 파일에 대 한 모든 참조를 대체 CMDIFrameWnd 와 CMDIFrameWndEx.

  6. Childfrm.h 및 childfrm.cpp 파일에서 바꾸기 CMDIChildWnd 와 CMDIChildWndEx.

    Childfrm에서.h 파일에서 바꾸기 CSplitterWnd 와 CSplitterWndEx.

  7. 도구 모음 및 상태 표시줄 새 MFC 클래스를 사용 하도록 수정 합니다.

    Mainfrm.h 파일에:

    1. Replace CToolBar with CMFCToolBar.

    2. Replace CStatusBar with CMFCStatusBar.

  8. Mainfrm.cpp 파일에서:

    1. 대체 m_wndToolBar.SetBarStyle 와m_wndToolBar.SetPaneStyle

    2. 대체 m_wndToolBar.GetBarStyle 와m_wndToolBar.GetPaneStyle

    3. 대체 DockControlBar(&m_wndToolBar) 와DockPane(&m_wndToolBar)

  9. Ipframe.cpp 파일에서 코드의 다음 세 줄을 주석 처리 합니다.

    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    pWndFrame->EnableDocking(CBRS_ALIGN_ANY);
    pWndFrame->DockPane(&m_wndToolBar);
    
  10. 응용 프로그램에 정적으로 연결 하려는 경우 프로젝트 리소스 (.rc) 파일을 시작 하려면 다음 코드를 추가 합니다.

    #include "afxribbon.rc"
    

    런타임에 필요한 리소스 afxribbon.rc 파일을 포함 합니다.MFC 응용 프로그램 마법사 응용 프로그램을 만들 때이 파일이 자동으로 포함 됩니다.

  11. 변경 내용을 저장 합니다. 빌드 및 응용 프로그램을 실행 합니다.

[단원]

비트맵을 프로젝트에 추가

이 연습의 단계 다음 네 개의 비트맵 리소스 필요합니다.다양 한 방법으로 해당 비트맵을 가져올 수 있습니다.

  • 사용은 리소스 편집기 사용자 고유의 비트맵을 만들 수 있습니다.또는 리소스 편집기를 사용 하 여 포함 된 이동식 네트워크 그래픽 (.png) 이미지의 비트맵을 어셈블하는 데 Visual Studio.이러한 이미지에는 VS2008ImageLibrary 디렉터리.

    그러나 리본 메뉴 사용자 인터페이스는 특정 비트맵에서 투명 한 이미지를 지원 해야 합니다.투명 한 비트맵 사용 하 여 32 비트 픽셀, 24 비트 색상의 빨강, 녹색 및 파랑 구성 요소를 지정 하 고 8 비트로 정의 위치는 알파 채널 는 색의 투명도 지정 합니다.현재 리소스 편집기는 볼 수 있지만 32 비트 픽셀 비트맵을 수정 합니다.따라서 외부 이미지 편집기 투명 한 비트맵을 조작할 수 대신 리소스 편집기를 사용 합니다.

  • 프로젝트 다른 응용 프로그램에서에서 적절 한 리소스 파일을 복사 및 다음 해당 파일에서 비트맵을 가져와야 합니다.

이 연습에서는 응용 프로그램 샘플 디렉터리에서에서 리소스 파일을 복사합니다.

비트맵을 프로젝트에 추가 하려면

  1. 파일 탐색기를 사용 하 여 리소스 디렉터리에서 다음.bmp 파일을 복사 합니다 (res)의 RibbonGadgets 샘플:

    1. Main.bmp Scribble 프로젝트에 복사 합니다.

    2. Scribble 프로젝트에 filesmall.bmp 및 filelarge.bmp를 복사 합니다.

    3. Filelarge.bmp 및 filesmall.bmp 파일의 새 복사본을 만들 있지만 RibbonGadgets 샘플에 복사본을 저장 합니다.복사본을 homesmall.bmp 및 homelarge.bmp 바꾸고 Scribble 프로젝트에 복사본을 이동 합니다.

    4. Toolbar.bmp 파일과 파일을 복사 하지만 RibbonGadgets 샘플에 복사본을 저장 합니다.복사 panelicons.bmp를 바꾸고 Scribble 프로젝트에 복사본을 이동 합니다.

  2. MFC 응용 프로그램에 대 한 비트맵을 가져옵니다.자원 보기, 두 번의 scribble.rc 노드를 두 번 클릭의 비트맵 노드를 클릭 하 고 추가 리소스.대화 상자가 나타나면 클릭 가져오기.찾아보기는 res 디렉터리에서 main.bmp 파일을 선택 하 고 누른 다음 열기.

    26 X 26 이미지 main.bmp 비트맵을 포함합니다.IDB_RIBBON_MAIN에는 비트맵의 ID를 변경 합니다.

  3. 응용 프로그램 단추에 첨부 된 파일 메뉴에 대 한 비트맵을 가져옵니다.

    1. 10 개의 16 x 16 (16 x 160)을 포함 하는 filesmall.bmp 파일을 가져올 이미지입니다.우리만 8 16 x 16 이미지 (16 x 128) 해야 하기 때문에 사용 하는 자원 보기 128에 160에서 비트맵의 너비를 변경 하려면.IDB_RIBBON_FILESMALL에는 비트맵의 ID를 변경 합니다.

    2. 8 32 X 32 (32 x 256)를 포함 하는 filelarge.bmp을 가져올 이미지입니다.IDB_RIBBON_FILELARGE에는 비트맵의 ID를 변경 합니다.

  4. 비트맵을 범주 리본 및 패널을 가져옵니다.각 탭에서 리본 표시줄 범주를 이며 텍스트 레이블 및 선택적 이미지 구성 됩니다.

    1. 8 개의 16 x 16 이미지 작은 단추 비트맵에 포함 된 homesmall.bmp 비트맵을 가져옵니다.IDB_RIBBON_HOMESMALL에는 비트맵의 ID를 변경 합니다.

    2. 8 개의 32 x 32 이미지 큰 단추 비트맵에 포함 된 homelarge.bmp 비트맵을 가져옵니다.IDB_RIBBON_HOMELARGE에는 비트맵의 ID를 변경 합니다.

  5. 비트맵을의 크기가 조정된 되는 리본 패널을 가져옵니다.리본 전체 패널을 표시 하려면 너무 작을 경우 이러한 비트맵, 또는 제어판 아이콘 크기 조정 작업을 수행한 후에 사용 됩니다.

    1. 8 개의 16 x 16 이미지에 포함 된 panelicons.bmp 비트맵을 가져옵니다.에 속성 의 창은 비트맵 편집기, 64 (16 x 64) 비트맵의 너비를 조정 합니다.IDB_PANEL_ICONS에는 비트맵의 ID를 변경 합니다.

[단원]

프로젝트에 리본 메뉴 리소스를 추가합니다.

리본 메뉴를 사용 하 여 응용 프로그램 메뉴를 사용 하는 응용 프로그램을 변환할 때 제거 또는 기존 메뉴를 사용 하지 않도록 설정 하지 않아도.대신 리본 단추 추가, 기존 메뉴 항목과 다음 새 단추를 연결할 리본 메뉴 리소스를 만들어야 합니다.메뉴를 더 이상 볼 수 있지만 메시지의 리본 메뉴 표시줄에서 메뉴를 통해 라우팅됩니다.또한 메뉴 바로 가기를 사용할 수 있습니다.

리본 큰 단추 리본 메뉴의 왼쪽 위 쪽에 있는 응용 프로그램 단추를와 하나 이상의 범주 탭으로 구성 됩니다.각 범주 탭 단추 리본 및 컨트롤에 대 한 컨테이너로 하나 이상의 패널이 포함 되어 있습니다.다음 절차는 리본 메뉴 리소스를 만들고 다음 응용 프로그램 단추를 사용자 지정 하는 방법을 보여 줍니다.

프로젝트에 리본 메뉴 리소스를 추가 하려면

  1. 프로젝트 메뉴를 클릭 추가 리소스.

  2. 리소스 추가 선택 대화 상자에서 리본 누른 다음 New.

    Visual Studio 리본 메뉴 리소스를 만들고 디자인 보기에서 엽니다.리본 메뉴 리소스 ID를 표시 하는 IDR_RIBBON1입니다 자원 보기.범주 및 패널 리본을 포함합니다.

  3. 해당 속성을 수정 하 여 응용 프로그램 단추를 사용자 지정할 수 있습니다.이 코드에 사용 되는 메시지 Id는 낙서 1.0에 대 한 메뉴에서 이미 정의 되어 있습니다.

  4. [디자인] 뷰에서 해당 속성을 표시 하는 응용 프로그램 단추를 클릭 합니다.다음과 같이 속성 값을 변경할: 이미지 에 IDB_RIBBON_MAIN, 프롬프트 에 파일, 에 f, 큰 이미지 에 IDB_RIBBON_FILELARGE, 및 작은 이미지 에 IDB_RIBBON_FILESMALL.

  5. 다음 수정 응용 프로그램 단추를 클릭할 때 나타나는 메뉴를 만듭니다.줄임표 (...) 옆에 주 항목 열은 항목 편집기.

    1. 클릭 추가 단추를 추가 합니다.Change Caption to &New, ID to ID_FILE_NEW, Image to 0, Image Large to 0.

    2. 클릭 추가 두 번째 단추를 추가 합니다.Change Caption to &Save, ID to ID_FILE_SAVE, Image to 2, and Image Large to 2.

    3. 클릭 추가 세 번째 단추를 추가 합니다.Change Caption to Save &As, ID to ID_FILE_SAVE_AS, Image to 3, and Image Large to 3.

    4. 클릭 추가 네 번째 단추를 추가 합니다.Change Caption to &Print, ID to ID_FILE_PRINT, Image to 4, and Image Large to 4.

    5. 변경의 항목 를 입력 합니다. 구분 누른 다음 추가.

    6. 변경의 항목 를 입력 합니다. 단추.클릭 추가 다섯 번째 단추를 추가 합니다.Change Caption to &Close, ID to ID_FILE_CLOSE, Image to 5, and Image Large to 5.

  6. 다음 하위 메뉴에서 이전 단계에서 만든 인쇄 단추를 만듭니다.

    1. 클릭의 인쇄 단추, 변경의 항목 를 입력 레이블, 누른 다음 삽입.변경 캡션 에 미리 보기 및 인쇄 문서.

    2. 클릭은 인쇄 단추, 변경의 항목 를 입력 단추, 클릭 삽입.Change Caption to &Print, ID to ID_FILE_PRINT, Image to 4, and Image Large to 4.

    3. 클릭은 인쇄 단추를 누르고 다음을 누릅니다 삽입 단추를 추가 합니다.변경 캡션 에 및 빠른 인쇄, ID 에 ID_FILE_PRINT_DIRECT, 이미지 에 7, 및 큰 이미지 에 7.

    4. 클릭은 인쇄 단추를 누른 다음 삽입 다른 단추를 추가 합니다.변경 캡션 에 전 인쇄 및 보기, ID 에 ID_FILE_PRINT_PREVIEW, 이미지 에 6, 및 이미지 큰 에6.

    5. 이제 수정한는 주 항목.클릭 닫기 종료 하는 항목 편집기.

  7. 다음과 같이 수정 응용 프로그램 단추 메뉴의 아래쪽에 표시 되는 끝내기 단추를 만듭니다.

    1. 속성 창에서 줄임표 (...) 옆에 단추 열은 항목 편집기.

    2. 클릭 추가 단추를 추가 합니다.Change Caption to E&xit, ID to ID_APP_EXIT, Image to8.

[단원]

리본 표시줄의 인스턴스 만들기

다음 단계는 응용 프로그램이 시작 될 때 리본 메뉴 막대의 인스턴스를 만드는 방법을 보여 줍니다.리본 표시줄과 응용 프로그램을 추가 하려면 리본 표시줄 mainfrm.h 파일에 선언 합니다.그런 다음 mainfrm.cpp 파일에서 리본 메뉴 리소스를 로드 하는 코드를 작성 합니다.

리본 막대의 인스턴스를 만들려면

  1. Mainfrm.h 파일에 보호 된 섹션에 데이터 멤버를 추가 CMainFrame, 주 프레임에 대 한 클래스 정의입니다.이 멤버가 리본 표시줄을 나타냅니다.

    // Ribbon bar for the application
    CMFCRibbonBar  m_wndRibbonBar;
    
  2. Mainfrm.cpp 파일에서 최종 앞에 다음 코드를 추가 합니다. return 문 끝에는 CMainFrame::OnCreate 함수.이 리본 막대의 인스턴스를 만듭니다.

    // Create the ribbon bar
    if (!m_wndRibbonBar.Create(this))
    {
    return -1;   //Failed to create ribbon bar
    }
    m_wndRibbonBar.LoadFromResource(IDR_RIBBON1);
    

[단원]

리본 메뉴 리소스를 사용자 지정합니다.

응용 프로그램 단추를 만든 후에 리본 메뉴에 요소를 추가할 수 있습니다.

[!참고]

이 연습 모든 패널에 대해 동일한 제어판 아이콘을 사용합니다.그러나 다른 아이콘을 표시 하려면 다른 이미지 목록 인덱스를 사용할 수 있습니다.

홈 범주를 추가 하 고 편집 패널

  1. 자유 프로그램 범주를 하나만 필요합니다.[디자인] 뷰에서 클릭 범주 속성을 표시 합니다.다음과 같이 속성 값을 변경할: 캡션 에 & 홈, 큰 이미지 에 IDB_RIBBON_HOMELARGE, 작은 이미지 에 IDB_RIBBON_HOMESMALL.

  2. 각 리본 범주 이름의 패널로 구성 됩니다.각 패널에는 관련된 작업을 수행 하는 컨트롤 집합이 있습니다.이 범주 패널에 있습니다.클릭 패널, 및 다음 변경 캡션 에 편집 및 이미지 인덱스 에 0.

  3. 하는 편집 패널, 문서의 내용을 지우기에 대 한 역할을 담당 하는 단추를 추가 합니다.이 단추에 대 한 메시지 ID IDR_SCRIBBTYPE 메뉴 리소스에 이미 정의 되어 있습니다.지정한 모두 지우기 단추 텍스트 및 단추를 데코레이팅합니다 있는 비트맵 인덱스.열려 있는 도구 상자, 끈 다음는 단추편집 패널.단추를 클릭 하 고 변경 캡션 에 모두 지우기, ID 에 ID_EDIT_CLEAR_ALL, 이미지 인덱스 에 0, 큰 이미지 인덱스 에 0.

  4. 변경 내용을 저장 합니다. 빌드 및 응용 프로그램을 실행 합니다.Scribble 응용 프로그램 표시 되어야 하 고 리본 표시줄과 메뉴 모음 대신 창 상단에 있어야 합니다.리본 표시줄 범주가 하나만 있어야 합니다. , 및 패널을 해야 편집.추가한 리본 단추는 기존 이벤트 처리기에 연결 해야 하는 열기, 닫기, 저장, 인쇄, 및 모두 지우기 단추 예상 대로 작동 합니다.

[단원]

응용 프로그램의 모양을 설정합니다.

A 비주얼 관리자 모든 그리기 응용 프로그램을 제어 하는 글로벌 개체입니다.Office 2000 사용자 인터페이스 (UI) 스타일을 사용 하 여 원래 Scribble 응용 프로그램 때문에 응용 프로그램이 구식 보일 수 있습니다.그와 같이 Office 2007 응용 프로그램에서 Office 2007 비주얼 관리자를 사용 하는 응용 프로그램을 다시 설정할 수 있습니다.

응용 프로그램의 모양을 설정.

  1. CMainFrame::OnCreate 기능, 기본 비주얼 관리자 및 스타일을 변경 하려면 다음 코드를 입력 합니다.

    // Set the default manager to Office 2007 
    CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
    CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue);
    
  2. 변경 내용을 저장 합니다. 빌드 및 응용 프로그램을 실행 합니다.응용 프로그램 UI에는 2007 Office UI와 비슷해야 합니다.

[단원]

다음 단계

리본 디자이너를 사용 하는 클래식 낙서 1.0 MFC 샘플을 수정 했습니다.이제 2 부.

참고 항목

작업

연습: MFC Scribble 응용 프로그램 (파트 2) 업데이트

기타 리소스

연습 (MFC)