TN022: 표준 명령 구현
참고 항목
다음 기술 노트는 온라인 설명서에 먼저 포함되어 있었으므로 업데이트되지 않았습니다. 따라서 일부 절차 및 항목은 만료되거나 올바르지 않을 수 있습니다. 최신 정보를 보려면 온라인 설명서 색인에서 관심 있는 항목을 검색하는 것이 좋습니다.
이 참고에서는 MFC 2.0에서 제공하는 표준 명령 구현에 대해 설명합니다. 많은 표준 명령을 구현하는 데 사용되는 메커니즘을 설명하므로 Technical Note 21을 먼저 읽습니다.
이 설명에서는 MFC 아키텍처, API 및 일반적인 프로그래밍 방법에 대한 지식을 가정합니다. 문서화되지 않은 "구현 전용" API뿐만 아니라 문서화된 API도 설명합니다. MFC에서 프로그래밍하는 방법 또는 기능 학습을 시작할 수 있는 위치는 아닙니다. 자세한 내용 및 문서화된 API에 대한 자세한 내용은 Visual C++를 참조하세요.
문제
MFC는 헤더 파일 AFXRES.H에 많은 표준 명령 ID를 정의합니다. 이러한 명령에 대한 프레임워크 지원은 다양합니다. 프레임워크 클래스가 이러한 명령을 처리하는 위치와 방법을 이해하면 프레임워크가 내부적으로 작동하는 방식을 보여 줄 뿐만 아니라 표준 구현을 사용자 지정하고 사용자 고유의 명령 처리기를 구현하는 몇 가지 기술을 학습하는 방법에 대한 유용한 정보를 제공합니다.
이 기술 참고 사항의 내용
각 명령 ID는 다음 두 섹션에 설명되어 있습니다.
제목: 명령 ID의 기호 이름(예: ID_FILE_SAVE)과 명령의 목적(예: "현재 문서 저장")을 콜론으로 구분합니다.
명령을 구현하는 클래스와 기본 구현이 수행하는 작업을 설명하는 하나 이상의 단락
대부분의 기본 명령 구현은 프레임워크의 기본 클래스 메시지 맵에 미리 연결됩니다. 파생 클래스에 명시적 배선이 필요한 몇 가지 명령 구현이 있습니다. "참고" 아래에 설명되어 있습니다. AppWizard에서 올바른 옵션을 선택한 경우 생성된 기본 애플리케이션에서 이러한 기본 처리기가 자동으로 연결됩니다.
명명 규칙
표준 명령은 가능한 경우 사용하는 것이 좋습니다 간단한 명명 규칙을 따릅니다. 대부분의 표준 명령은 애플리케이션의 메뉴 모음에 있는 표준 위치에 있습니다. 명령의 기호 이름은 "ID_"로 시작하고 표준 팝업 메뉴 이름과 메뉴 항목 이름으로 시작합니다. 기호 이름은 대문자로 밑줄 단어 나누기를 사용합니다. 표준 메뉴 항목 이름이 없는 명령의 경우 논리 명령 이름은 "ID_"(예: ID_NEXT_PANE)으로 정의됩니다.
"ID_" 접두사를 사용하여 메뉴 항목, 도구 모음 단추 또는 기타 명령 사용자 인터페이스 개체에 바인딩되도록 설계된 명령을 나타냅니다. "ID_" 명령을 처리하는 명령 처리기는 MFC 명령 아키텍처의 ON_COMMAND 및 ON_UPDATE_COMMAND_UI 메커니즘을 사용해야 합니다.
명령 아키텍처를 따르지 않고 메뉴별 코드가 필요한 메뉴 항목에는 표준 "IDM_" 접두사를 사용하여 사용하도록 설정하고 사용하지 않도록 설정하는 것이 좋습니다. 물론 MFC 명령 아키텍처를 따르면 명령 처리기가 도구 모음에서 작동하므로 명령 처리기가 더 강력해질 뿐만 아니라 명령 처리기 코드를 재사용할 수 있기 때문에 메뉴별 명령의 수는 작아야 합니다.
ID 범위
MFC의 ID 범위 사용에 대한 자세한 내용은 Technical Note 20 을 참조하세요.
MFC 표준 명령은 0xEFFF 0xE000 범위에 속합니다. 이러한 ID는 이후 버전의 라이브러리에서 변경될 수 있으므로 이러한 ID의 특정 값을 사용하지 마세요.
애플리케이션은 0xDFFF 0x8000 범위에서 해당 명령을 정의해야 합니다.
표준 명령 ID
각 명령 ID에는 프롬프트 파일에서 찾을 수 있는 표준 메시지 줄 프롬프트 문자열이 있습니다. Rc. 해당 메뉴 프롬프트의 문자열 ID는 명령 ID와 동일해야 합니다.
ID_FILE_NEW 새/빈 문서를 만듭니다.
참고 항목
이 기능을 사용하려면 파생 클래스의 메시지 맵에 연결
CWinApp
해야 합니다.CWinApp::OnFileNew
는 애플리케이션의 문서 서식 파일 수에 따라 이 명령을 다르게 구현합니다. 하나CDocTemplate
CWinApp::OnFileNew
만 있는 경우 해당 형식의 새 문서와 적절한 프레임 및 뷰 클래스를 만듭니다.둘
CDocTemplate
CWinApp::OnFileNew
이상이 있는 경우 대화 상자(AFX_IDD_NEWTYPEDLG)를 통해 사용자에게 사용할 문서 유형을 선택하라는 메시지를 표시합니다. 선택한CDocTemplate
문서를 만드는 데 사용됩니다.ID_FILE_NEW 한 가지 일반적인 사용자 지정은 다른 그래픽으로 선택한 문서 유형을 제공하는 것입니다. 이 경우 직접
CMyApp::OnFileNew
구현하고 대신 메시지 맵에CWinApp::OnFileNew
배치할 수 있습니다. 기본 클래스 구현을 호출할 필요가 없습니다.ID_FILE_NEW 대한 또 다른 일반적인 사용자 지정은 각 형식의 문서를 만들기 위한 별도의 명령을 제공하는 것입니다. 이 경우 새 명령 ID(예: ID_FILE_NEW_CHART 및 ID_FILE_NEW_SHEET)를 정의해야 합니다.
ID_FILE_OPEN 기존 문서를 엽니다.
참고 항목
이 기능을 사용하려면 파생 클래스의 메시지 맵에 연결
CWinApp
해야 합니다.CWinApp::OnFileOpen
에는 매우 간단한 호출CWinApp::DoPromptFileName
구현과CWinApp::OpenDocumentFile
열 파일의 파일 또는 경로 이름이 있습니다. 구현 루틴DoPromptFileName
은CWinApp
표준 FileOpen 대화 상자를 표시하고 현재 문서 템플릿에서 가져온 파일 확장명으로 채웁니다.ID_FILE_OPEN 한 가지 일반적인 사용자 지정은 FileOpen 대화 상자를 사용자 지정하거나 파일 필터를 추가하는 것입니다. 이를 사용자 지정하는 권장 방법은 기본 구현을 사용자 고유의 FileOpen 대화 상자로 바꾸고 문서의 파일 또는 경로 이름으로 호출
CWinApp::OpenDocumentFile
하는 것입니다. 기본 클래스를 호출할 필요가 없습니다.ID_FILE_CLOSE 현재 열려 있는 문서를 닫습니다.
CDocument::OnFileClose
을 호출CDocument::SaveModified
하여 수정된 경우 문서를 저장하라는 메시지를 표시한 다음 호출OnCloseDocument
합니다. 문서 삭제를 비롯한 모든 닫는 논리는 루틴에서OnCloseDocument
수행됩니다.참고 항목
ID_FILE_CLOSE 문서 프레임 창으로 전송된 WM_CLOSE 메시지 또는 SC_CLOSE 시스템 명령과 다르게 작동합니다. 창을 닫으면 문서를 표시하는 마지막 프레임 창인 경우에만 문서가 닫힙니다. ID_FILE_CLOSE 사용하여 문서를 닫으면 문서를 닫을 뿐만 아니라 문서를 표시하는 모든 프레임 창이 닫힙니다.
ID_FILE_SAVE 현재 문서를 저장합니다.
구현은 둘 다
OnFileSave
에OnFileSaveAs
사용되는 도우미 루틴CDocument::DoSave
을 사용합니다. 이전에 저장되지 않았거나(즉, FileNew의 경우와 같이 경로 이름이 없음) 읽기 전용 문서에서 읽은 문서를OnFileSave
저장하면 논리는 ID_FILE_SAVE_AS 명령처럼 작동하고 사용자에게 새 파일 이름을 제공하도록 요청합니다. 파일을 열고 저장하는 실제 프로세스는 가상 함수OnSaveDocument
를 통해 수행됩니다.ID_FILE_SAVE 사용자 지정하는 두 가지 일반적인 이유가 있습니다. 저장하지 않는 문서의 경우 사용자 인터페이스에서 ID_FILE_SAVE 메뉴 항목 및 도구 모음 단추를 제거하면 됩니다. 또한 문서(즉, 호출
CDocument::SetModifiedFlag
안 됨)를 더티 않으며 프레임워크에서 문서를 저장하지 않도록 합니다. 디스크 파일이 아닌 다른 위치로 저장하는 문서의 경우 해당 작업에 대한 새 명령을 정의합니다.경우
COleServerDoc
ID_FILE_SAVE 파일 저장(일반 문서용) 및 파일 업데이트(포함된 문서용)에 모두 사용됩니다.문서 데이터가 개별 디스크 파일에 저장되어 있지만 기본
CDocument
serialize 구현을 사용하지 않으려는 경우 대신 재정CDocument::OnSaveDocument
의OnFileSave
해야 합니다.ID_FILE_SAVE_AS 현재 문서를 다른 파일 이름으로 저장합니다.
구현은
CDocument::OnFileSaveAs
.와 동일한CDocument::DoSave
도우미 루틴을OnFileSave
사용합니다. 이OnFileSaveAs
명령은 저장 전에 문서에 파일 이름이 없는 경우 ID_FILE_SAVE 것처럼 처리됩니다.COleServerDoc::OnFileSaveAs
는 일반 문서 데이터 파일을 저장하거나 다른 애플리케이션에 포함된 OLE 개체를 나타내는 서버 문서를 별도의 파일로 저장하는 논리를 구현합니다.ID_FILE_SAVE 논리를 사용자 지정하는 경우 유사한 방식으로 ID_FILE_SAVE_AS 사용자 지정하거나 "다른 이름으로 저장" 작업이 문서에 적용되지 않을 수 있습니다. 메뉴 모음이 필요하지 않은 경우 메뉴 모음에서 메뉴 항목을 제거할 수 있습니다.
ID_FILE_SAVE_COPY_AS 복사본 현재 문서를 새 이름으로 저장합니다.
COleServerDoc::OnFileSaveCopyAs
문서 개체가 저장 후 기본 파일에 "연결"되지 않는다는 점을 제외하고 구현은 매우 유사CDocument::OnFileSaveAs
합니다. 즉, 메모리 내 문서가 저장 전에 "수정"된 경우 여전히 "수정"됩니다. 또한 이 명령은 문서에 저장된 경로 이름 또는 제목에 영향을 주지 않습니다.ID_FILE_UPDATE 컨테이너에 포함된 문서를 저장하도록 알 수 있습니다.
구현은
COleServerDoc::OnUpdateDocument
포함을 저장해야 하는 컨테이너를 간단히 표시합니다. 그런 다음 컨테이너는 포함된 개체를 저장하기 위해 적절한 OLE API를 호출합니다.ID_FILE_PAGE_SETUP 애플리케이션별 페이지 설정/레이아웃 대화 상자를 호출합니다.
현재 이 대화 상자에는 표준이 없으며 프레임워크에는 이 명령의 기본 구현이 없습니다.
이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_FILE_PRINT_SETUP 표준 인쇄 설정 대화 상자를 호출합니다.
참고 항목
이 기능을 사용하려면 파생 클래스의 메시지 맵에 연결
CWinApp
해야 합니다.이 명령은 사용자가 적어도 이 문서 또는 이 응용 프로그램의 모든 문서에 대해 프린터 및 인쇄 설정을 사용자 지정할 수 있도록 하는 표준 인쇄 설정 대화 상자를 호출합니다. 제어판 사용하여 전체 시스템의 기본 프린터 설정을 변경해야 합니다.
CWinApp::OnFilePrintSetup
에는 개체를 만들고 구현 함수를CPrintDialog
호출하는 매우 간단한 구현이CWinApp::DoPrintDialog
있습니다. 그러면 애플리케이션 기본 프린터 설정이 설정됩니다.이 명령을 사용자 지정하는 일반적인 요구는 문서별 프린터 설정을 허용하는 것입니다. 이 설정은 저장될 때 문서와 함께 저장해야 합니다. 이렇게 하려면 개체를 만드는 클래스에
CDocument
메시지 맵 처리기를 추가하고, 적절한 프린터 특성(일반적으로 hDevMode 및 hDevNames)으로 초기화하고, 호출CPrintDialog::DoModal
하고, 변경된 프린터 설정을 저장해야CPrintDialog
합니다. 강력한 구현을 위해 오류를 감지하고 합리적인 기본값을 처리하고CWinApp::UpdatePrinterSelection
시스템 전체 프린터 변경 내용을 추적하는 구현CWinApp::DoPrintDialog
을 살펴봐야 합니다.현재 문서의 ID_FILE_PRINT 표준 인쇄
참고 항목
이 기능을 사용하려면 파생 클래스의 메시지 맵에 연결
CView
해야 합니다.이 명령은 현재 문서를 인쇄하거나 더 올바르게 인쇄하여 표준 인쇄 대화 상자를 호출하고 인쇄 엔진을 실행하는 인쇄 프로세스를 시작합니다.
CView::OnFilePrint
는 이 명령과 기본 인쇄 루프를 구현합니다. 가상을CView::OnPreparePrinting
호출하여 인쇄 대화 상자가 있는 사용자의 프롬프트를 표시합니다. 그런 다음 출력 DC를 준비하여 프린터로 이동하고 인쇄 진행률 대화 상자(AFX_IDD_PRINTDLG)를 표시하고 이스케이프를 프린터로 보냅니다StartDoc
.CView::OnFilePrint
또한 기본 페이지 지향 인쇄 루프를 포함합니다. 각 페이지에 대해 가상CView::OnPrepareDC
을 호출한 다음 이스케이프를StartPage
호출하고 해당 페이지에 대한 가상CView::OnPrint
을 호출합니다. 완료되면 가상CView::OnEndPrinting
이 호출되고 인쇄 진행률 대화 상자가 닫힙니다.MFC 인쇄 아키텍처는 인쇄 및 인쇄 미리 보기를 위한 다양한 방법으로 후크하도록 설계되었습니다. 일반적으로 모든 페이지 지향 인쇄 작업에 적합한 다양한
CView
재정의 가능한 함수를 찾을 수 있습니다. 페이지 지향이 아닌 출력에 프린터를 사용하는 애플리케이션의 경우에만 ID_FILE_PRINT 구현을 바꿀 필요가 있습니다.ID_FILE_PRINT_PREVIEW 현재 문서의 인쇄 미리 보기 모드를 입력합니다.
참고 항목
이 기능을 사용하려면 파생 클래스의 메시지 맵에 연결
CView
해야 합니다.CView::OnFilePrintPreview
는 문서화된 도우미 함수CView::DoPrintPreview
를 호출하여 인쇄 미리 보기 모드를 시작합니다.CView::DoPrintPreview
는 인쇄 루프의 기본 엔진과 마찬가지로OnFilePrint
인쇄 미리 보기 루프의 기본 엔진입니다.인쇄 미리 보기 작업은 다양한 매개 변수
DoPrintPreview
를 전달하여 다양한 방법으로 사용자 지정할 수 있습니다. 인쇄 미리 보기의 세부 정보 및 사용자 지정 방법에 대해 설명하는 Technical Note 30을 참조하세요.ID_FILE_MRU_FILE1... FILE16 파일 MRU 목록에 대한 명령 ID 범위입니다.
CWinApp::OnUpdateRecentFileMenu
는 ON_UPDATE_COMMAND_UI 메커니즘의 고급 사용 중 하나인 업데이트 명령 UI 처리기입니다. 메뉴 리소스에서 ID가 ID_FILE_MRU_FILE1 단일 메뉴 항목만 정의하면 됩니다. 해당 메뉴 항목은 처음에 사용하지 않도록 기본.MRU 목록이 커짐에 따라 더 많은 메뉴 항목이 목록에 추가됩니다. 표준
CWinApp
구현은 기본적으로 가장 최근에 사용한 4개의 파일의 표준 제한으로 설정됩니다. 더 크거나 작은 값으로 호출CWinApp::LoadStdProfileSettings
하여 기본값을 변경할 수 있습니다. MRU 목록은 애플리케이션의 .에 저장됩니다. INI 파일. 이 목록은 호출LoadStdProfileSettings
하는 경우 애플리케이션의InitInstance
함수에 로드되고 애플리케이션이 종료될 때 저장됩니다. 또한 MRU 업데이트 명령 UI 처리기는 절대 경로를 파일 메뉴에 표시할 상대 경로로 변환합니다.CWinApp::OnOpenRecentFile
는 실제 명령을 수행하는 ON_COMMAND 처리기입니다. 파일을 열고 MRU 목록을 업데이트하는 모든 작업을 수행하는 MRU 목록 및 호출CWinApp::OpenDocumentFile
에서 파일 이름을 가져옵니다.이 명령 처리기의 사용자 지정은 권장되지 않습니다.
ID_EDIT_CLEAR 현재 선택 영역 지우기
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.CEditView
는 .를 사용하여CEdit::Clear
이 명령의 구현을 제공합니다. 현재 선택 영역이 없으면 명령을 사용할 수 없습니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_EDIT_CLEAR_ALL 전체 문서를 지웁니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다. 예제 구현은 MFC 자습서 샘플 SCRIBBLE 을 참조하세요.
ID_EDIT_COPY 현재 선택 영역을 클립보드에 복사합니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.CEditView
에서는 현재 선택한 텍스트를 클립보드에 복사하는 이 명령의 구현을 CF_TEXT.CEdit::Copy
현재 선택 영역이 없으면 명령을 사용할 수 없습니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_EDIT_CUT 현재 선택 영역을 클립보드로 잘라냅니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.CEditView
에서는 현재 선택한 텍스트를 클립보드로 잘라내는 이 명령의 구현을 CF_TEXTCEdit::Cut
. 현재 선택 영역이 없으면 명령을 사용할 수 없습니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_EDIT_FIND 찾기 작업을 시작하고 모덜리스 찾기 대화 상자를 표시합니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.CEditView
는 구현 도우미 함수OnEditFindReplace
를 호출하여 프라이빗 구현 변수에 이전 찾기/바꾸기 설정을 사용하고 저장하는 이 명령의 구현을 제공합니다. 클래스CFindReplaceDialog
는 사용자에게 메시지를 표시하기 위한 모덜리스 대화 상자를 관리하는 데 사용됩니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_EDIT_PASTE 현재 클립보드 내용을 삽입합니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.CEditView
에서는 선택한 텍스트를CEdit::Paste
대체하는 현재 클립보드 데이터를 복사하는 이 명령의 구현을 제공합니다. 클립보드에 CF_TEXT 없는 경우 명령을 사용할 수 없습니다.COleClientDoc
이 명령에 대한 업데이트 명령 UI 처리기만 제공합니다. 클립보드에 포함할 수 있는 OLE 항목/개체가 없으면 명령이 비활성화됩니다. 실제 붙여넣기를 수행하려면 실제 명령에 대한 처리기를 작성해야 합니다. OLE 애플리케이션이 다른 형식을 붙여넣을 수도 있는 경우 보기 또는 문서에 고유한 업데이트 명령 UI 처리기를 제공해야 합니다(즉, 명령 대상 라우팅 이전COleClientDoc
의 어딘가에 있음).이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
표준 OLE 구현을 대체하려면 .를 사용합니다
COleClientItem::CanPaste
.ID_EDIT_PASTE_LINK 현재 클립보드 내용의 링크를 삽입합니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.COleDocument
이 명령에 대한 업데이트 명령 UI 처리기만 제공합니다. 클립보드에 연결 가능한 OLE 항목/개체가 없으면 명령이 비활성화됩니다. 실제 붙여넣기를 수행하려면 실제 명령에 대한 처리기를 작성해야 합니다. OLE 애플리케이션이 다른 형식을 붙여넣을 수도 있는 경우 보기 또는 문서에 고유한 업데이트 명령 UI 처리기를 제공해야 합니다(즉, 명령 대상 라우팅 이전COleDocument
의 어딘가에 있음).이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
표준 OLE 구현을 대체하려면 .를 사용합니다
COleClientItem::CanPasteLink
.ID_EDIT_PASTE_SPECIAL 옵션이 있는 현재 클립보드 내용을 삽입합니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다. MFC는 이 대화 상자를 제공하지 않습니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_EDIT_REPEAT 마지막 작업을 반복합니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.CEditView
는 마지막 찾기 작업을 반복하는 이 명령의 구현을 제공합니다. 마지막 찾기에 대한 프라이빗 구현 변수가 사용됩니다. 찾기를 시도할 수 없는 경우 명령을 사용할 수 없습니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_EDIT_REPLACE 바꾸기 작업을 시작하고 모덜리스 바꾸기 대화 상자를 표시합니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.CEditView
는 구현 도우미 함수OnEditFindReplace
를 호출하여 프라이빗 구현 변수에 이전 찾기/바꾸기 설정을 사용하고 저장하는 이 명령의 구현을 제공합니다. 클래스CFindReplaceDialog
는 사용자에게 메시지를 표시하는 모덜리스 대화 상자를 관리하는 데 사용됩니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_EDIT_SELECT_ALL 전체 문서를 선택합니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.CEditView
는 문서의 모든 텍스트를 선택하는 이 명령의 구현을 제공합니다. 선택할 텍스트가 없으면 명령을 사용할 수 없습니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_EDIT_UNDO 마지막 작업을 실행 취소합니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.CEditView
를 사용하여CEdit::Undo
이 명령의 구현을 제공합니다. FALSE를 반환하는 경우 명령을 사용할 수CEdit::CanUndo
없습니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_EDIT_REDO 마지막 작업을 다시 실행합니다.
현재 이 명령에 대한 표준 구현은 없습니다. 각
CView
파생 클래스에 대해 이를 구현해야 합니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_WINDOW_NEW 현재 문서에서 다른 창을 엽니다.
CMDIFrameWnd::OnWindowNew
는 현재 문서의 문서 서식 파일을 사용하여 현재 문서의 다른 보기를 포함하는 다른 프레임을 만들어 이 강력한 기능을 구현합니다.대부분의 MDI(문서 인터페이스) 창 메뉴 명령과 마찬가지로 활성 MDI 자식 창이 없으면 명령을 사용할 수 없습니다.
이 명령 처리기의 사용자 지정은 권장되지 않습니다. 추가 보기 또는 프레임 창을 만드는 명령을 제공하려는 경우 사용자 고유의 명령을 만드는 것이 더 나을 수 있습니다. 코드를
CMDIFrameWnd::OnWindowNew
복제하여 특정 프레임으로 수정하고 원하는 클래스를 볼 수 있습니다.ID_WINDOW_ARRANGE MDI 창 아래쪽에 있는 아이콘을 정렬합니다.
CMDIFrameWnd
는 구현 도우미 함수OnMDIWindowCmd
에서 이 표준 MDI 명령을 구현합니다. 이 도우미는 명령 ID를 MDI Windows 메시지에 매핑하므로 많은 코드를 공유할 수 있습니다.대부분의 MDI 창 메뉴 명령과 마찬가지로 활성 MDI 자식 창이 없으면 명령을 사용할 수 없습니다.
이 명령 처리기의 사용자 지정은 권장되지 않습니다.
ID_WINDOW_CASCADE 겹치도록 캐스케이드 창을 표시합니다.
CMDIFrameWnd
는 구현 도우미 함수OnMDIWindowCmd
에서 이 표준 MDI 명령을 구현합니다. 이 도우미는 명령 ID를 MDI Windows 메시지에 매핑하므로 많은 코드를 공유할 수 있습니다.대부분의 MDI 창 메뉴 명령과 마찬가지로 활성 MDI 자식 창이 없으면 명령을 사용할 수 없습니다.
이 명령 처리기의 사용자 지정은 권장되지 않습니다.
타일 창을 가로로 ID_WINDOW_TILE_HORZ.
이 명령은 작업에 다른 MDI Windows 메시지가 사용되는 것을 제외하고 ID_WINDOW_CASCADE 마찬가지로 구현
CMDIFrameWnd
됩니다.애플리케이션의 기본 타일 방향을 선택해야 합니다. 이 작업은 창 "타일" 메뉴 항목의 ID를 ID_WINDOW_TILE_HORZ 또는 ID_WINDOW_TILE_VERT 변경하여 수행할 수 있습니다.
타일 창을 세로로 ID_WINDOW_TILE_VERT.
이 명령은 작업에 다른 MDI Windows 메시지가 사용되는 것을 제외하고 ID_WINDOW_CASCADE 마찬가지로 구현
CMDIFrameWnd
됩니다.애플리케이션의 기본 타일 방향을 선택해야 합니다. 이 작업은 창 "타일" 메뉴 항목의 ID를 ID_WINDOW_TILE_HORZ 또는 ID_WINDOW_TILE_VERT 변경하여 수행할 수 있습니다.
분할자에서 키보드 인터페이스를 ID_WINDOW_SPLIT.
CView
는 구현에 대해 이 명령을 처리합니다CSplitterWnd
. 뷰가 분할자 창의 일부인 경우 이 명령은 구현 함수CSplitterWnd::DoKeyboardSplit
에 위임됩니다. 그러면 키보드 사용자가 분할자 창을 분할하거나 풀 수 있는 모드로 분할자가 배치됩니다.이 명령은 뷰가 분할자 안에 없는 경우 사용하지 않도록 설정됩니다.
이 명령 처리기의 사용자 지정은 권장되지 않습니다.
ID_APP_ABOUT 정보 대화 상자를 호출합니다.
애플리케이션의 정보 상자에 대한 표준 구현은 없습니다. 기본 AppWizard에서 만든 애플리케이션은 애플리케이션에 대한 사용자 지정 대화 상자 클래스를 만들고 이를 정보 상자로 사용합니다. 또한 AppWizard는 이 명령을 처리하고 대화 상자를 호출하는 간단한 명령 처리기를 작성합니다.
거의 항상 이 명령을 구현합니다.
ID_APP_EXIT 애플리케이션을 종료합니다.
CWinApp::OnAppExit
는 애플리케이션의 기본 창에 WM_CLOSE 메시지를 전송하여 이 명령을 처리합니다. 애플리케이션의 표준 종료(더티 파일 등에 대한 메시지 표시)는 구현에서CFrameWnd
처리됩니다.이 명령 처리기의 사용자 지정은 권장되지 않습니다. 재정의
CWinApp::SaveAllModified
또는 닫는CFrameWnd
논리를 사용하는 것이 좋습니다.이 명령을 구현하도록 선택하는 경우 이 명령 ID를 사용하는 것이 좋습니다.
ID_HELP_INDEX 에서 도움말 항목을 나열합니다. HLP 파일.
참고 항목
이 기능을 사용하려면 파생 클래스의 메시지 맵에 연결
CWinApp
해야 합니다.CWinApp::OnHelpIndex
는 사소한 호출CWinApp::WinHelp
을 통해 이 명령을 처리합니다.이 명령 처리기의 사용자 지정은 권장되지 않습니다.
ID_HELP_USING 도움말을 사용하는 방법에 대한 도움말을 표시합니다.
참고 항목
이 기능을 사용하려면 파생 클래스의 메시지 맵에 연결
CWinApp
해야 합니다.CWinApp::OnHelpUsing
는 사소한 호출CWinApp::WinHelp
을 통해 이 명령을 처리합니다.이 명령 처리기의 사용자 지정은 권장되지 않습니다.
ID_CONTEXT_HELP SHIFT-F1 도움말 모드를 입력합니다.
참고 항목
이 기능을 사용하려면 파생 클래스의 메시지 맵에 연결
CWinApp
해야 합니다.CWinApp::OnContextHelp
는 도움말 모드 커서를 설정하고, 모달 루프를 입력하고, 사용자가 도움을 받을 창을 선택할 때까지 대기하여 이 명령을 처리합니다. MFC 도움말 구현에 대한 자세한 내용은 기술 참고 28 을 참조하세요.이 명령 처리기의 사용자 지정은 권장되지 않습니다.
ID_HELP 현재 컨텍스트에 대한 도움말 제공
참고 항목
이 기능을 사용하려면 파생 클래스의 메시지 맵에 연결
CWinApp
해야 합니다.CWinApp::OnHelp
는 현재 애플리케이션 컨텍스트에 적합한 도움말 컨텍스트를 가져오면 이 명령을 처리합니다. 간단한 F1 도움말, 메시지 상자에 대한 도움말 등을 처리합니다. MFC 도움말 구현에 대한 자세한 내용은 Technical Note 28 을 참조하세요.이 명령 처리기의 사용자 지정은 권장되지 않습니다.
ID_DEFAULT_HELP 컨텍스트에 대한 기본 도움말 표시
참고 항목
이 기능을 사용하려면 파생 클래스의 메시지 맵에 연결
CWinApp
해야 합니다.이 명령은 일반적으로 .에 매핑됩니다
CWinApp::OnHelpIndex
.기본 도움말과 도움말 인덱스 간의 구분이 필요한 경우 다른 명령 처리기를 제공할 수 있습니다.
ID_NEXT_PANE 다음 창으로 이동
CView
는 구현에 대해 이 명령을 처리합니다CSplitterWnd
. 뷰가 분할자 창의 일부인 경우 이 명령은 구현 함수CSplitterWnd::OnNextPaneCmd
에 위임됩니다. 그러면 현재 보기가 분할자의 다음 창으로 이동합니다.보기가 분할자 안에 없거나 다음 창이 없는 경우 이 명령을 사용할 수 없습니다.
이 명령 처리기의 사용자 지정은 권장되지 않습니다.
ID_PREV_PANE 이전 창으로 이동
CView
는 구현에 대해 이 명령을 처리합니다CSplitterWnd
. 뷰가 분할자 창의 일부인 경우 이 명령은 구현 함수CSplitterWnd::OnNextPaneCmd
에 위임됩니다. 그러면 현재 보기가 분할자의 이전 창으로 이동합니다.보기가 분할자 안에 없거나 이전 창이 없는 경우 이 명령을 사용할 수 없습니다.
이 명령 처리기의 사용자 지정은 권장되지 않습니다.
ID_OLE_INSERT_NEW 새 OLE 개체 삽입
현재 이 명령에 대한 표준 구현은 없습니다. 현재 선택 영역에 새 OLE 항목/개체를 삽입하려면 파생 클래스에 대해 이를
CView
구현해야 합니다.모든 OLE 클라이언트 애플리케이션은 이 명령을 구현해야 합니다. AppWizard는 OLE 옵션을 사용하여 완료해야 하는 뷰 클래스의
OnInsertObject
기본 구현을 만듭니다.이 명령의 전체 구현은 MFC OLE 샘플 OCLIENT 예제를 참조하세요.
ID_OLE_EDIT_LINKS OLE 링크 편집
COleDocument
는 표준 OLE 링크 대화 상자의 MFC 제공 구현을 사용하여 이 명령을 처리합니다. 이 대화 상자의 구현은 클래스를 통해 액세스됩니다COleLinksDialog
. 현재 문서에 링크가 없으면 명령을 사용할 수 없습니다.이 명령 처리기의 사용자 지정은 권장되지 않습니다.
ID_OLE_VERB_FIRST... OLE 동사의 마지막 ID 범위
COleDocument
는 현재 선택한 OLE 항목/개체에서 지원하는 동사에 대해 이 명령 ID 범위를 사용합니다. 지정된 OLE 항목/개체 형식이 0개 이상의 사용자 지정 동사를 지원할 수 있으므로 범위여야 합니다. 애플리케이션의 메뉴에는 ID가 ID_OLE_VERB_FIRST 메뉴 항목이 하나 있어야 합니다. 프로그램을 실행하면 적절한 메뉴 동사 설명(또는 많은 동사가 있는 팝업 메뉴)으로 메뉴가 업데이트됩니다. OLE 메뉴의 관리는 이 명령에 대한 업데이트 명령 UI 처리기에서 수행되는 방식으로 처리AfxOleSetEditMenu
됩니다.이 범위의 각 명령 ID를 처리하기 위한 명시적 명령 처리기는 없습니다.
COleDocument::OnCmdMsg
는 이 범위의 모든 명령 ID를 트래핑하고, 0부터 시작하는 동사 번호로 변환하고, 해당 동사(사용COleClientItem::DoVerb
)에 대한 서버를 시작하도록 재정의됩니다.사용자 지정 또는 이 명령 ID 범위의 다른 사용은 권장되지 않습니다.
ID_VIEW_TOOLBAR 도구 모음을 켜고 끕니다.
CFrameWnd
는 이 명령과 update-command UI 처리기를 처리하여 도구 모음의 표시 상태를 토글합니다. 도구 모음은 자식 창 ID가 AFX_IDW_TOOLBAR 프레임의 자식 창이어야 합니다. 명령 처리기는 실제로 도구 모음 창의 표시 유형을 전환합니다.CFrameWnd::RecalcLayout
는 새 상태의 도구 모음을 사용하여 프레임 창을 다시 그리는 데 사용됩니다. 업데이트 명령 UI 처리기는 도구 모음이 표시되면 메뉴 항목을 검사.이 명령 처리기의 사용자 지정은 권장되지 않습니다. 추가 도구 모음을 추가하려는 경우 이 명령에 대한 명령 처리기 및 update-command UI 처리기를 복제하고 수정해야 합니다.
ID_VIEW_STATUS_BAR 상태 표시줄을 켜고 끕니다.
이 명령은 다른 자식 창 ID(AFX_IDW_STATUS_BAR)가 사용되는 것을 제외하고 ID_VIEW_TOOLBAR 마찬가지로 구현
CFrameWnd
됩니다.
업데이트 전용 명령 처리기
몇 가지 표준 명령 ID는 상태 막대에서 표시기로 사용됩니다. 동일한 업데이트 명령 UI 처리 메커니즘을 사용하여 애플리케이션 유휴 시간 동안 현재 시각적 상태를 표시합니다. 사용자가 선택할 수 없으므로(즉, 상태 막대 창을 푸시할 수 없음) 이러한 명령 ID에 대한 ON_COMMAND 처리기가 있는 것은 의미가 없습니다.
ID_INDICATOR_CAPS: CAP 잠금 표시기입니다.
ID_INDICATOR_NUM: NUM 잠금 표시기입니다.
ID_INDICATOR_SCRL: SCRL 잠금 표시기입니다.
ID_INDICATOR_KANA: KANA 잠금 표시기(일본 시스템에만 적용됨)
이 세 가지 모두 명령 ID를 CFrameWnd::OnUpdateKeyIndicator
사용하여 적절한 가상 키에 매핑하는 구현 도우미에서 구현됩니다. 일반적인 구현은 적절한 가상 키가 현재 잠겨 있는지 여부에 따라 개체를 사용하거나 사용하지 않도록 설정(상태 창 사용 안 함 = 텍스트 없음)CCmdUI
합니다.
이 명령 처리기의 사용자 지정은 권장되지 않습니다.
ID_INDICATOR_EXT: EXTended 선택 표시기입니다.
ID_INDICATOR_OVR: OVeRstrike 표시기입니다.
ID_INDICATOR_REC: 다시 기록 표시기입니다.
현재 이러한 지표에 대한 표준 구현은 없습니다.
이러한 표시기를 구현하도록 선택하는 경우 이러한 표시기 ID를 사용하고 기본 상태 표시기의 순서를 지정하는 것이 좋습니다(즉, EXT, CAP, NUM, SCRL, OVR, REC 순서).