다음을 통해 공유


사용자 정의 형식

MFC는 사용자 정의 도구를 지원합니다. 사용자 정의 도구는 사용자가 지정한 외부 프로그램을 실행하는 특수 명령입니다. 사용자 지정 프로세스를 사용하여 사용자 정의 도구를 관리할 수 있습니다. 그러나 애플리케이션 개체가 CWinAppEx 클래스에서 파생되지 않은 경우에는 이 프로세스를 사용할 수 없습니다. 사용자 지정에 대한 자세한 내용은 MFC에 대한 사용자 지정을 참조하세요.

사용자 정의 도구 지원을 사용하도록 설정한 경우 사용자 지정 대화 상자에 도구 탭이 자동으로 포함됩니다. 다음 그림에서는 도구 페이지를 보여 줍니다.

Tools tab in the Customize dialog box.
사용자 지정 대화 상자 도구 탭

사용자 정의 도구 지원 사용

애플리케이션에서 사용자 정의 도구를 사용하도록 설정하려면 CWinAppEx::EnableUserTools를 호출 합니다. 그러나 먼저 이 호출에 대한 매개 변수로 사용할 애플리케이션의 리소스 파일에서 여러 상수를 정의해야 합니다.

리소스 편집기에서 적절한 명령 ID를 사용하는 더미 명령을 만듭니다. 다음 예제에서는 명령 ID로 사용합니다 ID_TOOLS_ENTRY . 이 명령 ID는 프레임워크가 사용자 정의 도구를 삽입하는 하나 이상의 메뉴에 위치를 표시합니다.

사용자 정의 도구를 나타내려면 문자열 테이블에 몇 가지 연속 ID를 따로 두어야 합니다. 따로 설정한 문자열 수는 사용자가 정의할 수 있는 최대 사용자 도구 수와 같습니다. 다음 예제에서는 이러한 이름을 통해 ID_USER_TOOL10이름이 지정 ID_USER_TOOL1 됩니다.

사용자에게 제안하여 도구로 호출될 외부 프로그램에 대한 디렉터리 및 인수를 선택하는 데 도움을 줄 수 있습니다. 이렇게 하려면 리소스 편집기에서 두 개의 팝업 메뉴를 만듭니다. 다음 예제에서는 이러한 이름을 지정 IDR_MENU_ARGS 하고 IDR_MENU_DIRS. 이러한 메뉴의 각 명령에 대해 애플리케이션 문자열 테이블에서 문자열을 정의합니다. 문자열의 리소스 ID는 명령 ID와 같아야 합니다.

CUserTool 클래스에서 파생 클래스를 만들어 기본 구현을 바꿀 수도 있습니다. 이렇게 하려면 파생 클래스에 대한 런타임 정보를 RUNTIME_CLASS(CUserTool 클래스) 대신 CWinAppEx::EnableUserTools의 네 번째 매개 변수로 전달합니다.

적절한 상수 정의 후 CWinAppEx::EnableUserTools를 호출하여 사용자 정의 도구를 사용하도록 설정합니다.

다음 메서드 호출은 이러한 상수를 사용하는 방법을 보여 줍니다.

EnableUserTools(ID_TOOLS_ENTRY,
                ID_USER_TOOL1,
                ID_USER_TOOL10,
                RUNTIME_CLASS(CUserTool),
                IDR_MENU_ARGS,
                IDR_MENU_DIRS);

이 예제에서는 도구 탭이 사용자 지정 대화 상자에 포함됩니다. 프레임워크는 사용자가 해당 메뉴를 열 때마다 모든 메뉴의 명령 ID ID_TOOLS_ENTRY 와 일치하는 명령을 현재 정의된 사용자 도구 집합으로 바꿉니다. 명령 ID는 ID_USER_TOOL1 ID_USER_TOOL10 사용자 정의 도구에 사용하도록 예약되어 있습니다. CUserTool 클래스 클래스 는 사용자 도구에 대한 호출을 처리합니다. 사용자 지정 대화 상자의 도구 탭은 인수 및 디렉터리 입력 필드 오른쪽에 있는 단추를 제공하여 메뉴 IDR_MENU_ARGS 및 IDR_MENU_DIRS 액세스합니다. 사용자가 이러한 메뉴 중 하나에서 명령을 선택하면 프레임워크는 리소스 ID가 명령 ID와 같은 문자열을 적절한 텍스트 상자에 추가합니다.

미리 정의된 도구 포함

애플리케이션 시작 시 일부 도구를 미리 정의하려면 애플리케이션의 기본 창의 CFrameWnd::LoadFrame 메서드를 재정의해야 합니다. 이 메서드에서는 다음 단계를 수행해야 합니다.

LoadFrame에서 새 도구를 추가하려면
  1. CWinAppEx::GetUserToolsManager를 호출하여 CUserToolsManager 클래스 개체에 대한 포인터를 가져옵니다.

  2. 만들려는 모든 도구에 대해 CUserToolsManager::CreateNewTool을 호출합니다. 이 메서드는 CUserTool 클래스 개체에 대한 포인터를 반환하고 새로 만든 사용자 도구를 내부 도구 컬렉션에 추가합니다. CWinAppEx::EnableUserTools의 네 번째 매개 변수로 CUserTool 클래스파생 클래스에 대한 런타임 정보를 제공한 경우 CUserToolsManager::CreateNewTool은 대신 해당 클래스의 인스턴스를 인스턴스화하고 반환합니다.

  3. 각 도구에 대해 설정하여 텍스트 레이블을 설정하고 CUserTool::m_strLabel 호출 CUserTool::SetCommand하여 해당 명령을 설정합니다. CUserTool 클래스기본 구현은 호출SetCommand에 지정된 프로그램에서 사용 가능한 아이콘을 자동으로 검색합니다.

참고 항목

MFC에 대한 사용자 지정
CUserTool 클래스
CUserToolsManager 클래스
CWinAppEx 클래스