연습: 컨트롤에 도구 모음 배치
이 항목에서는 Windows 컨트롤 도구 모음에 있는 도구 모음 단추를 추가 하는 방법을 설명 합니다.MFC에서는 도구 모음 단추에 있어야는 CMFCToolBarButton 클래스-예를 들어 파생 클래스에서 CMFCToolBarComboBoxButton 클래스, CMFCToolBarEditBoxButton 클래스, CMFCDropDownToolbarButton 클래스, 또는 CMFCToolBarMenuButton 클래스.
도구 모음 컨트롤을 추가합니다.
컨트롤 도구 모음에 추가 하려면 다음과이 같이 하십시오.
단추의 부모 도구 모음 리소스에서 더미 리소스 ID를 예약 합니다.Visual Studio 도구 모음 편집기를 사용 하 여 단추를 만드는 방법에 대 한 자세한 내용은 참조 하십시오 있는 도구 모음 편집기 항목.
모든 비트맵의 상위 도구 모음에 있는 단추를 도구 모음 모양 (단추 아이콘)을 예약 합니다.
처리 메시지 처리기에서는 AFX_WM_RESETTOOLBAR 메시지에서 다음을 수행 합니다.
Button 컨트롤을 사용 하 여 생성 한 CMFCToolbarButton-클래스를 파생 합니다.
새 컨트롤을 사용 하 여 더미 단추를 대체 CMFCToolBar::ReplaceButton.때문에 스택에 단추 개체를 생성할 수 있습니다 ReplaceButton 단추 개체를 복사 하 고 복사본을 유지 합니다.
[!참고]
응용 프로그램에서 사용자 지정을 사용 하는 경우 도구 모음을 사용 하 여 재설정 할 수 있습니다는 재설정 단추는 도구 모음 탭의 사용자 지정 대화 상자에서 응용 프로그램을 다시 컴파일하지 후 업데이트 된 컨트롤을 참조 하십시오.도구 모음 상태 Windows 레지스트리에 저장 된 및 레지스트리 정보를 로드 하 고 적용 한 후의 ReplaceButton 응용 프로그램을 시작 하는 동안 메서드를 실행 합니다.
도구 모음 컨트롤 및 사용자 지정
명령 을 탭의 사용자 지정 대화 상자는 응용 프로그램에서 사용할 수 있는 명령 목록을 포함 합니다.기본적으로 사용자 지정 대화 상자 응용 프로그램 메뉴를 처리 하 고 표준 도구 모음 단추에서 각 메뉴 항목의에서 목록을 만듭니다.도구 모음 컨트롤을 제공 하는 확장된 기능을 유지 하려면 표준 도구 모음 단추 사용자 지정 컨트롤을 바꿔야는 사용자 지정 대화 상자.
사용자 지정을 사용 하면 만들려는 사용자 지정 대화 상자에서 사용자 지정 처리기 OnViewCustomize 사용 하 여는 CMFCToolBarsCustomizeDialog 클래스 클래스입니다.표시 하기 전에 사용자 지정 대화 상자를 호출 하 여 CMFCToolBarsCustomizeDialog::Create, 호출 CMFCToolBarsCustomizeDialog::ReplaceButton 표준 단추는 새 컨트롤로 대체 합니다.
예제: 찾기 콤보 상자 만들기
이 섹션을 만드는 방법을 설명에 Find 도구 모음을 표시 하 고 최근에 사용한 검색 문자열을 포함 하는 콤보 상자 컨트롤입니다.사용자 컨트롤에 문자열을 입력 한 다음 문서를 검색 하려면 enter 키를 누릅니다 하거나 주 프레임에 포커스를 돌아가려면 esc 키를 누릅니다.문서에 표시 되는 것으로 가정은 CEditView 클래스-뷰를 파생 합니다.
찾을 컨트롤 만들기
첫째, 만들는 Find 콤보 상자 컨트롤:
단추 및 명령을 해당 응용 프로그램 리소스를 추가 합니다.
응용 프로그램 리소스에서 새 단추를 추가 된 ID_EDIT_FIND 명령 ID를 응용 프로그램에 도구 모음 및 도구 모음에 연결 된 비트맵에.
ID_EDIT_FIND 명령 ID와 새 메뉴 항목을 만듭니다.
"문자열 테이블에는 text\nfind를 찾을" 새 문자열을 추가 하 고 할당 된 ID_EDIT_FIND_COMBO 명령 ID이 ID의 명령 ID로 사용 됩니다 있는 Find 콤보 상자 단추.
[!참고]
때문에 ID_EDIT_FIND 에 의해 처리 되는 표준 명령입니다 CEditView에서이 명령에 대 한 특별 한 처리기를 구현할 필요는 없습니다.하지만 새 명령에 대 한 처리기를 구현 해야, ID_EDIT_FIND_COMBO.
새 클래스를 만드는 CFindComboBox에서 파생 된 CComboBox 클래스.
에 CFindComboBox 클래스, 재정의 PreTranslateMessage 가상 메서드.이 메서드를 처리 하는 콤보 상자 수는 WM_KEYDOWN 메시지입니다.사용자가 esc 키를 누르면 (VK_ESCAPE), 주 프레임 창으로 포커스를 반환 합니다.사용자가 Enter 키를 누르면 (VK_ENTER), 주 프레임 창에 게시 한 WM_COMMAND 포함 하는 메시지는 ID_EDIT_FIND_COMBO 명령 ID
클래스를 만드는 Find 에서 파생 되는 콤보 상자 단추를 CMFCToolBarComboBoxButton 클래스.이 예제에서는 이름 CFindComboButton.
생성자의 CMFCToolbarComboBoxButton 세 개의 매개 변수: 단추, 단추 이미지 인덱스와 콤보 상자의 스타일의 명령 ID입니다.이러한 매개 변수는 다음과 같이 설정 합니다.
전달의 ID_EDIT_FIND_COMBO 명령 ID와
사용 CCommandManager::GetCmdImage 와 ID_EDIT_FIND 이미지 인덱스를 얻을 수 있습니다.
사용 가능한 콤보 상자 스타일 목록을 참조 하십시오. 콤보 상자 스타일.
CFindComboButton 클래스에서 CMFCToolbarComboBoxButton::CreateCombo 메서드를 재정의합니다.만들어야 합니다 여기는 CFindComboButton 개체에 대 한 포인터를 반환 하 고 있습니다.
사용의 IMPLEMENT_SERIAL 매크로 콤보 버튼 영구적으로 만들 수 있습니다.작업 영역 관리자 자동으로 로드 하 고 단추의 상태를 Windows 레지스트리에 저장 합니다.
구현에서 ID_EDIT_FIND_COMBO 처리기에서 문서 보기.사용 CMFCToolBar::GetCommandButtons 와 ID_EDIT_FIND_COMBO 모두 검색 하려면 Find 콤보 상자 단추.때문에 사용자 지정 명령 id가 같은 단추의 복사본 여러 개 있을 수 있습니다.
ID_EDIT_FIND 메시지 처리기에서 OnFind, 사용 CMFCToolBar::IsLastCommandFromButton 찾기 명령에서 보냈는지 여부를 확인 하는 Find 콤보 상자 단추.그렇다면, 텍스트 찾기 및 콤보 상자에 검색 문자열을 추가 합니다.
주 도구 모음에 찾기 컨트롤을 추가합니다.
도구 모음에 콤보 상자 단추를 추가 하려면 다음과이 같이 하십시오.
구현에서 AFX_WM_RESETTOOLBAR 메시지 처리기 OnToolbarReset 주 프레임 창에서입니다.
[!참고]
프레임 워크는 응용 프로그램 시작 시 도구 모음 초기화 되거나 동안 사용자 지정 도구 모음을 재설정할 때 주 프레임 창에이 메시지를 보냅니다.두 경우 모두에서 표준 도구 모음 단추에 사용자 지정 교체 해야 Find 콤보 상자 단추.
에 AFX_WM_RESETTOOLBAR 처리기를 도구 모음 ID, 즉 검사, WPARAM 의 AFX_WM_RESETTOOLBAR 메시지입니다.도구 모음 ID가 들어 있는 도구 모음과 같은 경우는 Find 콤보 상자 단추를 호출 CMFCToolBar::ReplaceButton 대체 하는 Find 단추 (단추, 명령 ID와 ID_EDIT_FIND) 와 CFindComboButton 개체.
[!참고]
생성할 수 있습니다는 CFindComboBox 개체는 스택에 때문에 ReplaceButton 단추 개체를 복사 하 고 복사본을 유지 합니다.
사용자 지정 대화 상자에 찾기 컨트롤을 추가합니다.
사용자 지정 처리기에 OnViewCustomize, 호출 CMFCToolBarsCustomizeDialog::ReplaceButton 교체할 수는 Find 단추 (단추, 명령 ID와 ID_EDIT_FIND) 에 CFindComboButton 개체.
참고 항목
참조
CMFCToolBarsCustomizeDialog 클래스