MFC ActiveX 컨트롤: 다른 사용자 지정 속성 페이지 추가
경우에 따라 ActiveX 컨트롤에는 한 속성 페이지에 합리적으로 맞을 수 있는 것보다 더 많은 속성이 있습니다. 이 경우 ActiveX 컨트롤에 속성 페이지를 추가하여 이러한 속성을 표시할 수 있습니다.
이 문서에서는 이미 하나 이상의 속성 페이지가 있는 ActiveX 컨트롤에 새 속성 페이지를 추가하는 방법을 설명합니다. 스톡 속성 페이지(글꼴, 그림 또는 색)를 추가하는 방법에 대한 자세한 내용은 MFC ActiveX 컨트롤: Stock 속성 페이지 사용 문서를 참조하세요.
다음 절차에서는 ActiveX 컨트롤 마법사에서 만든 샘플 ActiveX 컨트롤 프레임워크를 사용합니다. 따라서 클래스 이름과 식별자는 이 예제에서 고유합니다.
ActiveX 컨트롤에서 속성 페이지를 사용하는 방법에 관한 자세한 내용은 다음 문서를 참조하세요.
-
참고 항목
새 속성 페이지는 ActiveX 컨트롤 속성 페이지의 크기 표준을 준수하는 것이 좋습니다. 스톡 그림 및 색 속성 페이지는 DLU(250x62 대화 상자 단위)를 측정합니다. 표준 글꼴 속성 페이지는 250x110 D RU입니다. ActiveX 컨트롤 마법사에서 만든 기본 속성 페이지는 250x62 DLU 표준을 사용합니다.
프로젝트에 새 속성 페이지 템플릿을 삽입하려면
컨트롤 프로젝트가 열려 있는 상태에서 프로젝트 작업 영역에서 리소스 보기를 엽니다.
리소스 보기를 마우스 오른쪽 단추로 클릭하여 바로 가기 메뉴를 열고 리소스 추가를 클릭합니다.
대화 상자 노드를 확장하고 IDD_OLE_PROPPAGE_SMALL 선택합니다.
새로 만들기를 클릭하여 프로젝트에 리소스를 추가합니다.
새 속성 페이지 템플릿을 선택하여 속성 창(리소스 보기)을 새로 고칩니다.
ID 속성에 대한 새 값을 입력합니다. 이 예제에서는 IDD_PROPPAGE_NEWPAGE 사용합니다.
도구 모음에서 저장을 클릭합니다.
새 템플릿을 클래스와 연결하려면
클래스 뷰를 엽니다.
클래스 뷰를 마우스 오른쪽 단추로 클릭하여 바로 가기 메뉴를 엽니다.
바로 가기 메뉴에서 추가를 클릭한 다음, 클래스 추가를 클릭합니다.
그러면 클래스 추가 대화 상자가 열립니다.
MFC 클래스 템플릿을 두 번 클릭합니다.
MFC 클래스 마법사의 클래스 이름 상자에 새 대화 상자 클래스의 이름을 입력합니다. (이 예제에서는
CAddtlPropPage
.)파일 이름을 변경하려면 [변경]을 클릭합니다. 구현 및 헤더 파일의 이름을 입력하거나 기본 이름을 적용합니다.
기본 클래스 상자에서 .를 선택합니다
COlePropertyPage
.대화 상자 ID 상자에서 IDD_PROPPAGE_NEWPAGE 선택합니다.
마침을 클릭하여 클래스를 만듭니다.
컨트롤의 사용자가 이 새 속성 페이지에 액세스할 수 있도록 하려면 컨트롤의 속성 페이지 ID 매크로 섹션(컨트롤 구현 파일에 있음)을 다음과 같이 변경합니다.
BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
PROPPAGEID(CMyAxUIPropPage::guid)
PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)
BEGIN_PROPPAGEIDS 매크로의 두 번째 매개 변수(속성 페이지 수)를 1에서 2로 늘려야 합니다.
또한 컨트롤 구현 파일()을 수정해야 합니다. 헤더를 포함할 CPP(파일) 새 속성 페이지 클래스의 H) 파일입니다.
다음 단계에서는 새 속성 페이지에 대한 형식 이름과 캡션 제공하는 두 개의 새 문자열 리소스를 만듭니다.
속성 페이지에 새 문자열 리소스를 추가하려면
컨트롤 프로젝트를 열고 리소스 보기를 엽니다.
문자열 테이블 폴더를 두 번 클릭한 다음 문자열을 추가할 기존 문자열 테이블 리소스를 두 번 클릭합니다.
그러면 창에서 문자열 테이블이 열립니다.
문자열 테이블 끝에 있는 빈 줄을 선택하고 문자열의 텍스트 또는 캡션 입력합니다(예: "추가 속성 페이지").
그러면 캡션 및 ID 상자가 표시된 문자열 속성 페이지가 열립니다. 캡션 상자에는 입력한 문자열이 포함됩니다.
ID 상자에서 문자열의 ID를 선택하거나 입력합니다. 완료되면 Enter 키를 누릅니다.
이 예제에서는 새 속성 페이지의 형식 이름에 IDS_SAMPLE_ADDPAGE 사용합니다.
ID에 대한 IDS_SAMPLE_ADDPPG_CAPTION, 캡션 "추가 속성 페이지"를 사용하여 3단계와 4단계를 반복합니다.
안에. 새 속성 페이지 클래스의 CPP 파일(이 예제에서는
CAddtlPropPage
)은 다음 예제와 같이 AfxOleRegisterPropertyPageClass에서 IDS_SAMPLE_ADDPAGE 전달되도록 수정CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry
합니다.BOOL CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry(BOOL bRegister) { if (bRegister) return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(), m_clsid, IDS_SAMPLE_ADDPAGE); else return AfxOleUnregisterClass(m_clsid, NULL); }
다음과 같이 IDS_SAMPLE_ADDPPG_CAPTION 생성
CAddtlPropPage
자에 전달되도록COlePropertyPage
생성자를 수정합니다.CAddtlPropPage::CAddtlPropPage() : COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION) { }
필요한 수정을 수행한 후 프로젝트를 다시 빌드하고 테스트 컨테이너를 사용하여 새 속성 페이지를 테스트합니다. 테스트 컨테이너에 액세스하는 방법은 테스트 컨테이너로 속성 및 이벤트 테스트 를 참조하세요.