다음을 통해 공유


CPropertySheet 수업

속성 시트(탭 대화 상자라고도 함)를 나타냅니다.

구문

class CPropertySheet : public CWnd

멤버

공용 생성자

속성 설명
CPropertySheet::CPropertySheet CPropertySheet 개체를 생성합니다.

공용 메서드

이름 설명
CPropertySheet::AddPage 속성 시트에 페이지를 추가합니다.
CPropertySheet::Construct CPropertySheet 개체를 생성합니다.
CPropertySheet::Create 모덜리스 속성 시트를 표시합니다.
CPropertySheet::DoModal 모달 속성 시트를 표시합니다.
CPropertySheet::EnableStackedTabs 속성 시트에서 누적 탭 또는 스크롤 탭을 사용하는지 여부를 나타냅니다.
CPropertySheet::EndDialog 속성 시트를 종료합니다.
CPropertySheet::GetActiveIndex 속성 시트의 활성 페이지 인덱스를 검색합니다.
CPropertySheet::GetActivePage 활성 페이지 개체를 반환합니다.
CPropertySheet::GetPage 지정된 페이지에 대한 포인터를 검색합니다.
CPropertySheet::GetPageCount 속성 시트의 페이지 수를 검색합니다.
CPropertySheet::GetPageIndex 속성 시트의 지정된 페이지의 인덱스를 검색합니다.
CPropertySheet::GetTabControl 탭 컨트롤에 대한 포인터를 검색합니다.
CPropertySheet::MapDialogRect 사각형의 대화 상자 단위를 화면 단위로 변환합니다.
CPropertySheet::OnInitDialog 속성 시트 초기화를 보강하려면 재정의합니다.
CPropertySheet::PressButton 속성 시트에서 지정된 단추의 선택을 시뮬레이트합니다.
CPropertySheet::RemovePage 속성 시트에서 페이지를 제거합니다.
CPropertySheet::SetActivePage 프로그래밍 방식으로 활성 페이지 개체를 설정합니다.
CPropertySheet::SetFinishText 마침 단추의 텍스트를 설정합니다.
CPropertySheet::SetTitle 속성 시트의 캡션을 설정합니다.
CPropertySheet::SetWizardButtons 마법사 단추를 사용하도록 설정합니다.
CPropertySheet::SetWizardMode 마법사 모드를 사용하도록 설정합니다.

공용 데이터 멤버

속성 설명
CPropertySheet::m_psh Windows PROPSHEETHEADER 구조체입니다. 기본 속성 시트 매개 변수에 대한 액세스를 제공합니다.

설명

속성 시트는 개체와 하나 이상의 CPropertyPage 개체로 CPropertySheet 구성됩니다. 프레임워크는 현재 선택한 페이지가 포함된 영역 및 탭 인덱스 집합이 있는 창으로 속성 시트를 표시합니다. 사용자는 적절한 탭을 사용하여 특정 페이지로 이동합니다.

CPropertySheet 에서는 Windows 98 및 Windows NT 2000에 도입된 확장된 PROPSHEETHEADER 구조를 지원합니다. 구조체에는 "워터마크" 배경 비트맵 사용을 지원하는 추가 플래그 및 멤버가 포함됩니다.

이러한 새 이미지를 속성 시트 개체에 자동으로 표시하려면 호출 CPropertySheet::Construct 시 비트맵 및 팔레트 이미지에 유효한 값을 전달합니다 CPropertySheet::CPropertySheet.

파생되지 CDialog않더라 CPropertySheet 도 개체를 관리하는 CPropertySheet 것은 개체를 관리하는 CDialog 것과 같습니다. 예를 들어 속성 시트를 만들려면 생성자를 호출한 다음 모달 속성 시트 또는 Create 모달 속성 시트를 호출 DoModal 하는 두 부분으로 구성된 구성이 필요합니다. CPropertySheet 에는 두 가지 유형의 생성자가 CPropertySheet::Construct 있습니다 CPropertySheet::CPropertySheet.

개체를 CPropertySheet 생성할 때 일부 창 스타일 에서 첫 번째 예외가 발생할 수 있습니다. 이렇게 하면 시트를 만들기 전에 시스템에서 속성 시트의 스타일을 변경하려고 합니다. 이 예외를 방지하려면 만들 때 다음 스타일을 설정해야 합니다 CPropertySheet.

  • DS_3DLOOK

  • DS_CONTROL

  • WS_CHILD

  • WS_TABSTOP

다음 스타일은 선택 사항이며 첫 번째 예외가 발생하지 않습니다.

  • DS_SHELLFONT

  • DS_LOCALEDIT

  • WS_CLIPCHILDREN

다른 Window Styles 모든 항목은 사용할 수 없으며 사용하도록 설정하면 안 됩니다.

개체와 외부 개체 간에 CPropertySheet 데이터를 교환하는 것은 개체와 CDialog 데이터를 교환하는 것과 비슷합니다. 중요한 차이점은 속성 시트의 설정은 일반적으로 개체 자체가 아닌 개체의 CPropertyPage CPropertySheet 멤버 변수라는 것입니다.

마법사라는 탭 대화 상자 유형을 만들 수 있습니다. 이 대화 상자는 디바이스 설정 또는 뉴스레터 만들기와 같은 작업 단계를 안내하는 속성 페이지 시퀀스가 있는 속성 시트로 구성됩니다. 마법사 유형 탭 대화 상자에서 속성 페이지에는 탭이 없으며 한 번에 하나의 속성 페이지만 표시됩니다. 또한 확인 및 지금 적용 단추 대신 마법사 유형 탭 대화 상자에 뒤로 단추, 다음 또는 마침 단추, 취소 단추 및 도움말 단추가 있습니다.

마법사 유형 대화 상자를 만들려면 표준 속성 시트를 만들기 위해 수행하는 것과 동일한 단계를 수행하지만 호출DoModal하기 전에 호출 SetWizardMode 합니다. 마법사 단추를 사용하도록 설정하려면 플래그를 사용하여 함수 및 모양을 사용자 지정하여 호출 SetWizardButtons합니다. 마침 단추를 사용하도록 설정하려면 마법사의 마지막 페이지에서 사용자가 작업을 수행한 후 호출 SetFinishText 합니다.

개체를 사용하는 CPropertySheet 방법에 대한 자세한 내용은 속성 시트 및 속성 페이지 문서를 참조하세요.

상속 계층 구조

CObject

CCmdTarget

CWnd

CPropertySheet

요구 사항

머리글: afxdlgs.h

CPropertySheet::AddPage

속성 시트에서 맨 오른쪽 탭이 있는 제공된 페이지를 추가합니다.

void AddPage(CPropertyPage* pPage);

매개 변수

pPage
속성 시트에 추가할 페이지를 가리킵니다. 다음의 NULL 일 수 없습니다.

설명

표시할 왼쪽에서 오른쪽 순서로 속성 시트에 페이지를 추가합니다.

AddPage 개체의 CPropertyPage 페이지 목록에 개체를 CPropertySheet 추가하지만 실제로 페이지의 창을 만들지는 않습니다. 프레임워크는 사용자가 해당 페이지를 선택할 때까지 페이지의 창 만들기를 연기합니다.

를 사용하여 AddPage속성 페이지를 추가할 때는 . CPropertySheetCPropertyPage부모입니다. 속성 페이지에서 속성 시트에 액세스하려면 .를 호출 CWnd::GetParent합니다.

호출 AddPage할 속성 시트 창을 만들 때까지 기다릴 필요가 없습니다. 일반적으로 호출하거나 Create호출하기 전에 호출 AddPage DoModal 합니다.

속성 페이지를 표시한 후 호출 AddPage 하면 탭 행에 새로 추가된 페이지가 반영됩니다.

예시

// Add three pages to a CPropertySheet object, then show the 
// CPropertySheet object as a modal dialog.  CStylePage, CShapePage,  
// and CColorPage are CPropertyPage-derived classes created 
// by the Add Class wizard.  

CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));

CStylePage     stylePage;
CColorPage     colorPage;
CShapePage     shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);

dlgPropertySheet.DoModal();

CPropertySheet::Construct

CPropertySheet 개체를 생성합니다.

void Construct(
    UINT nIDCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

void Construct(
    LPCTSTR pszCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

void Construct(
    UINT nIDCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

void Construct(
    LPCTSTR pszCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

매개 변수

nIDCaption
속성 시트에 사용할 캡션의 ID입니다.

pParentWnd
속성 시트의 부모 창에 대한 포인터입니다. 이 경우 NULL부모 창이 애플리케이션의 주 창이 됩니다.

iSelectPage
처음에 맨 위에 있을 페이지의 인덱스입니다. 기본값은 시트에 추가된 첫 번째 페이지입니다.

pszCaption
속성 시트에 사용할 캡션이 포함된 문자열에 대한 포인터입니다. 다음의 NULL 일 수 없습니다.

hbmWatermark
속성 페이지의 워터마크 비트맵에 대한 핸들입니다.

hpalWatermark
워터마크 비트맵 및/또는 헤더 비트맵의 색상표에 대한 핸들입니다.

hbmHeader
속성 페이지의 헤더 비트맵에 대한 핸들입니다.

설명

클래스 생성자 중 하나가 아직 호출되지 않은 경우 이 멤버 함수를 호출합니다. 예를 들어 개체 배열을 선언하거나 할당할 때 호출 Construct 합니다 CPropertySheet . 배열의 경우 배열의 각 멤버를 호출 Construct 해야 합니다.

속성 시트 DoModal Create를 표시하려면 첫 번째 매개 변수에 포함된 문자열은 속성 시트의 캡션 표시줄에 배치됩니다.

위에 나열된 세 번째 또는 네 번째 프로토타입을 사용하고 , hpalWatermark및/또는 매개 변수에 Construct유효한 값을 hbmWatermark전달하는 경우 워터마크 및/또는 hbmHeader 헤더 이미지를 자동으로 표시할 수 있습니다.

예시

다음 예제에서는 호출 Construct할 상황을 보여 줍니다.

const int c_cSheets = 3;
CPropertySheet   grpropsheet[c_cSheets];
// no need to call Construct for this next one
CPropertySheet   someSheet(_T("Some sheet"));

LPTSTR rgszSheets[c_cSheets] = {
   _T("Sheet 1"),
   _T("Sheet 2"),
   _T("Sheet 3")
};

for (int i = 0; i < c_cSheets; i++)
   grpropsheet[i].Construct(rgszSheets[i]);

CPropertySheet::CPropertySheet

CPropertySheet 개체를 생성합니다.

CPropertySheet();

explicit CPropertySheet(
    UINT nIDCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

explicit CPropertySheet(
    LPCTSTR pszCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

CPropertySheet(
    UINT nIDCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

CPropertySheet(
    LPCTSTR pszCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

매개 변수

nIDCaption
속성 시트에 사용할 캡션의 ID입니다.

pParentWnd
속성 시트의 부모 창을 가리킵니다. 이 경우 NULL부모 창이 애플리케이션의 주 창이 됩니다.

iSelectPage
처음에 맨 위에 있을 페이지의 인덱스입니다. 기본값은 시트에 추가된 첫 번째 페이지입니다.

pszCaption
속성 시트에 사용할 캡션이 포함된 문자열을 가리킵니다. 다음의 NULL 일 수 없습니다.

hbmWatermark
속성 시트의 배경 비트맵에 대한 핸들입니다.

hpalWatermark
워터마크 비트맵 및/또는 헤더 비트맵의 색상표에 대한 핸들입니다.

hbmHeader
속성 페이지의 헤더 비트맵에 대한 핸들입니다.

설명

속성 시트 DoModal Create를 표시하려면 첫 번째 매개 변수에 포함된 문자열은 속성 시트의 캡션 표시줄에 배치됩니다.

여러 매개 변수가 있는 경우(예: 배열을 사용하는 경우) 대신 CPropertySheet사용합니다Construct.

위의 세 번째 또는 네 번째 프로토타입CPropertySheet을 사용하고 , hpalWatermark및/또는 매개 변수에 유효한 값을 hbmWatermark전달하는 경우 워터마크 및/또는 hbmHeader 헤더 이미지를 자동으로 표시할 수 있습니다.

예시

// Declare a CPropertySheet object titled "Simple PropertySheet".
CPropertySheet dlgPropertySheet1(_T("Simple PropertySheet"));

// Declare a CPropertySheet object whose title is specified in the
// IDS_PROPERTYSHEET_TITLE string resource, and the second page is
// initially on top.  
CPropertySheet dlgPropertySheet2(IDS_PROPERTYSHEET_TITLE, this, 1);

CPropertySheet::Create

모덜리스 속성 시트를 표시합니다.

virtual BOOL Create(CWnd* pParentWnd = NULL,
    DWORD dwStyle = (DWORD)-1,
    DWORD dwExStyle = 0);

매개 변수

pParentWnd
부모 창을 가리킵니다. 이면 NULL부모가 바탕 화면입니다.

dwStyle
속성 시트의 창 스타일입니다. 사용 가능한 스타일의 전체 목록은 창 스타일을 참조 하세요.

dwExStyle
속성 시트의 확장 창 스타일입니다. 사용 가능한 스타일의 전체 목록은 확장 창 스타일을 참조하세요 .

Return Value

속성 시트가 성공적으로 만들어지면 0이 아닌 경우 그렇지 않으면 0입니다.

설명

호출 Create 은 생성자 내에 있거나 생성자가 호출된 후 호출할 수 있습니다.

-1 dwStyle을 전달하여 표현되는 기본 스타일은 실제로 WS_SYSMENU|WS_POPUP|WS_CAPTION|DS_MODALFRAME|DS_CONTEXTHELP|WS_VISIBLE입니다. 0 dwExStyle으로 전달하여 표현되는 기본 확장 창 스타일은 실제로 WS_EX_DLGMODALFRAME입니다.

멤버 함수는 Create 속성 시트를 만든 직후에 반환됩니다. 속성 시트를 삭제하려면 .를 호출합니다 CWnd::DestroyWindow.

모달 속성 시트처럼 확인, 취소, 지금 적용 및 도움말 단추가 없는 호출 Create 과 함께 표시되는 모덜리스 속성 시트입니다. 사용자가 원하는 단추를 만들어야 합니다.

모달 속성 시트를 표시하려면 대신 호출 DoModal 합니다.

예시

// This code fragment shows how to create a modeless property sheet 
// dialog in a command message handler (OnModelessPropertySheet()) 
// of a CView-derived class.
void CPSheetView::OnModelessPropertySheet()
{
   // Declare a CPropertySheet object.  m_pdlgPropertySheet is a data
   // member of type CPropertySheet in CView-derived class.
   m_pdlgPropertySheet = new CPropertySheet(_T("Simple PropertySheet"));
   ASSERT(m_pdlgPropertySheet);

   // Add three pages to the CPropertySheet object.  Both m_pstylePage, 
   // m_pcolorPage, and m_pshapePage are data members of type 
   // CPropertyPage-derived classes in CView-derived class.
   m_pstylePage = new CStylePage;
   m_pcolorPage = new CColorPage;
   m_pshapePage = new CShapePage;
   m_pdlgPropertySheet->AddPage(m_pstylePage);
   m_pdlgPropertySheet->AddPage(m_pcolorPage);
   m_pdlgPropertySheet->AddPage(m_pshapePage);

   // Create a modeless CPropertySheet dialog.
   m_pdlgPropertySheet->Create();
}

 

// The code fragment below shows how to destroy the C++ objects for
// propertysheet and propertypage in the destructor of CView-derived
// class.
// NOTE:  DestroyWindow() is called in CPropertySheet::OnClose() so
// you do not need to call it here.  Property pages are children
// of the CPropertySheet, they will be destroyed by their parents.
CPSheetView::~CPSheetView()
{
   delete m_pshapePage;
   delete m_pstylePage;
   delete m_pcolorPage;
   delete m_pdlgPropertySheet;
}

CPropertySheet::DoModal

모달 속성 시트를 표시합니다.

virtual INT_PTR DoModal();

Return Value

IDOK 또는 IDCANCEL 함수가 성공했는지, 그렇지 않으면 0 또는 -1입니다. 속성 시트가 마법사로 설정된 경우(참조 SetWizardMode) DoModal 중 하나 ID_WIZFINISH 또는 IDCANCEL를 반환합니다.

설명

반환 값은 속성 시트를 닫은 컨트롤의 ID에 해당합니다. 이 함수가 반환되면 속성 시트에 해당하는 창과 모든 페이지가 제거됩니다. 개체 자체는 여전히 존재합니다. 일반적으로 IDOK를 반환한 CPropertyPageDoModal 개체에서 데이터를 검색합니다.

모덜리스 속성 시트를 표시하려면 대신 호출 Create 합니다.

해당 대화 상자 리소스에서 속성 페이지를 만들면 첫 번째 예외가 발생할 수 있습니다. 그러면 속성 페이지에서 대화 상자 리소스의 스타일이 페이지를 만들기 전에 필요한 스타일로 변경됩니다. 리소스는 일반적으로 읽기 전용이므로 예외가 발생합니다. 시스템에서 예외를 처리하고 수정된 리소스의 복사본을 만듭니다. 따라서 첫 번째 예외는 무시될 수 있습니다.

참고 항목

비동기 예외 처리 모델을 사용하여 컴파일하는 경우 운영 체제에서 이 예외를 처리해야 합니다. 예외 처리 모델에 대한 자세한 내용은 (예외 처리 모델)을 참조 /EH 하세요. 이 경우 catch가 모든 예외를 CPropertySheet::DoModal 처리하는 C++ try-catch 블록을 사용하여 호출을 래핑하지 마세요. 예를 들면 catch (...)다음과 같습니다. 이 블록은 운영 체제에 대한 예외를 처리하고 예측할 수 없는 동작을 발생합니다. 그러나 액세스 위반 예외가 운영 체제로 전달되는 특정 예외 유형 또는 구조적 예외 처리와 함께 C++ 예외 처리를 안전하게 사용할 수 있습니다.

이 첫 번째 예외가 발생하지 않도록 속성 시트에 올바른 창 스타일이 있는지 수동으로 보장할 수 있습니다. 속성 시트에 대해 다음 스타일을 설정해야 합니다.

  • DS_3DLOOK

  • DS_CONTROL

  • WS_CHILD

  • WS_TABSTOP

첫 번째 예외를 발생하지 않고 다음 선택적 스타일을 사용할 수 있습니다.

  • DS_SHELLFONT

  • DS_LOCALEDIT

  • WS_CLIPCHILDREN

다른 모든 Windows 스타일은 속성 시트와 호환되지 않으므로 사용하지 않도록 설정합니다. 이 조언은 확장 스타일에는 적용되지 않습니다. 이러한 표준 스타일을 적절하게 설정하면 속성 시트를 수정할 필요가 없으며 첫 번째 예외가 생성되지 않습니다.

예시

CPropertySheet::AddPage에 대한 예를 참조하세요.

CPropertySheet::EnableStackedTabs

속성 시트에 탭 행을 쌓을지 여부를 나타냅니다.

void EnableStackedTabs(BOOL bStacked);

매개 변수

bStacked
속성 시트에서 누적 탭을 사용할 수 있는지 여부를 나타냅니다. 로 설정하여 태그의 누적 행을 사용하지 않도록 설정합니다 bStacked FALSE.

설명

기본적으로 속성 시트에 속성 시트 너비의 단일 행에 맞는 것보다 더 많은 탭이 있는 경우 탭은 여러 행에 쌓입니다. 탭을 쌓는 대신 스크롤 탭을 사용하려면 호출하기 전에 설정된 상태로 호출 EnableStackedTabs bStacked DoModal 하거나 Create.FALSE

모달 또는 모덜리스 속성 시트를 만들 때 호출 EnableStackedTabs 해야 합니다. 이 스타일을 -derived 클래스에 CPropertySheet통합하려면 에 대한 메시지 처리기를 작성합니다 WM_CREATE. 재정의 CWnd::OnCreate된 버전에서 기본 클래스 구현을 호출하기 전에 호출 EnableStackedTabs( FALSE ) 합니다.

예시

int CMyPropertySheet::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   // Set for Scrolling Tabs style
   EnableStackedTabs(FALSE);
   // Call the base class
   if (CPropertySheet::OnCreate(lpCreateStruct) == -1)
      return -1;

   return 0;
}

CPropertySheet::EndDialog

속성 시트를 종료합니다.

void EndDialog(int nEndID);

매개 변수

nEndID
속성 시트의 반환 값으로 사용할 식별자입니다.

설명

이 멤버 함수는 확인, 취소 또는 닫기 단추를 누를 때 프레임워크에서 호출됩니다. 속성 시트를 닫아야 하는 이벤트가 발생하면 이 멤버 함수를 호출합니다.

이 멤버 함수는 모달 대화 상자에서만 사용됩니다.

예시

CPropertySheet::PressButton에 대한 예를 참조하세요.

CPropertySheet::GetActiveIndex

속성 시트 창의 활성 페이지의 인덱스 번호를 가져오고 반환된 인덱스 번호를 매개 변수 GetPage로 사용합니다.

int GetActiveIndex() const;

Return Value

활성 페이지의 인덱스 번호입니다.

예시

CPropertySheet::GetActivePage에 대한 예를 참조하세요.

CPropertySheet::GetActivePage

속성 시트 창의 활성 페이지를 검색합니다.

CPropertyPage* GetActivePage() const;

Return Value

현재 페이지에 대한 포인터입니다.

설명

이 멤버 함수를 사용하여 활성 페이지에서 일부 작업을 수행합니다.

예시

// The code fragment below sets the last active page (i.e. the 
// active page when the propertysheet was closed) to be the first 
// visible page when the propertysheet is shown. The last active 
// page was saved in m_LastActivePage, (a member variable of 
// CDocument-derived class) when OK was selected from the 
// propertysheet. CMyPropertySheet is a CPropertySheet-derived class.
BOOL CMyPropertySheet::OnInitDialog()
{
   BOOL bResult = CPropertySheet::OnInitDialog();

   CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
   CMDIChildWnd* pchild = pframe->MDIGetActive();
   CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
   SetActivePage(doc->m_LastActivePage);

   return bResult;
}

BOOL CMyPropertySheet::OnCommand(WPARAM wParam, LPARAM lParam)
{
   if (LOWORD(wParam) == IDOK)
   {
      CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
      CMDIChildWnd* pchild = pframe->MDIGetActive();
      CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
      doc->m_LastActivePage = GetPageIndex(GetActivePage()); // or GetActiveIndex()
   }

   return CPropertySheet::OnCommand(wParam, lParam);
}

CPropertySheet::GetPage

이 속성 시트의 지정된 페이지에 대한 포인터를 반환합니다.

CPropertyPage* GetPage(int nPage) const;

매개 변수

nPage
0부터 시작하는 원하는 페이지의 인덱스입니다. 속성 시트의 페이지 수보다 0에서 1 사이여야 합니다( 포함).

Return Value

매개 변수에 해당하는 페이지에 대한 포인터입니다 nPage .

예시

CPropertyPage::OnWizardFinish에 대한 예를 참조하세요.

CPropertySheet::GetPageCount

현재 속성 시트에 있는 페이지 수를 결정합니다.

int GetPageCount() const;

Return Value

속성 시트의 페이지 수입니다.

예시

CPropertyPage::OnWizardFinish에 대한 예를 참조하세요.

CPropertySheet::GetPageIndex

속성 시트에서 지정한 페이지의 인덱스 번호를 검색합니다.

int GetPageIndex(CPropertyPage* pPage);

매개 변수

pPage
찾을 인덱스가 있는 페이지를 가리킵니다. 다음의 NULL 일 수 없습니다.

Return Value

페이지의 인덱스 번호입니다.

설명

예를 들어 사용하기 위해 페이지 인덱스 또는 GetPage.를 가져오는 데 SetActivePage 사용합니다GetPageIndex.

예시

CPropertySheet::GetActivePage에 대한 예를 참조하세요.

CPropertySheet::GetTabControl

탭 컨트롤에 대한 포인터를 검색하여 탭 컨트롤과 관련된 작업을 수행합니다(즉, 해당 API CTabCtrl를 사용).

CTabCtrl* GetTabControl() const;

Return Value

탭 컨트롤에 대한 포인터입니다.

설명

예를 들어 초기화 중에 각 탭에 비트맵을 추가하려면 이 멤버 함수를 호출합니다.

예시

// Create and associate a tooltip control to the tab control of 
// CMyTTPropertySheet.  CMyTTPropertySheet is a CPropertySheet-derived
// class.
BOOL CMyTTPropertySheet::OnInitDialog()
{
   BOOL bResult = CPropertySheet::OnInitDialog();

   // Create a tooltip control.  m_pToolTipCtrl is a member variable
   // of type CToolTipCtrl* in CMyTTPropertySheet class.  It is 
   // initialized to NULL in the constructor, and destroyed in the 
   // destructor of CMyTTPropertySheet class.
   m_pToolTipCtrl = new CToolTipCtrl;
   if (!m_pToolTipCtrl->Create(this))
   {
      TRACE(_T("Unable To create ToolTip\n"));
      return bResult;
   }

   // Associate the tooltip control to the tab control
   // of CMyPropertySheet.
   CTabCtrl* ptab = GetTabControl();
   ptab->SetToolTips(m_pToolTipCtrl);

   // Get the bounding rectangle of each tab in the tab control of the
   // property sheet. Use this rectangle when registering a tool with 
   // the tool tip control.  IDS_FIRST_TOOLTIP is the first ID string 
   // resource that contains the text for the tool.
   int count = ptab->GetItemCount();
   int id = IDS_FIRST_TOOLTIP;
   for (int i = 0; i < count; i++)
   {
      CRect r;
      ptab->GetItemRect(i, &r);
      VERIFY(m_pToolTipCtrl->AddTool(ptab, id, &r, id));
      id++;
   }

   // Activate the tooltip control.
   m_pToolTipCtrl->Activate(TRUE);

   return bResult;
}

// Override PreTranslateMessage() so RelayEvent() can be 
// called to pass a mouse message to CMyTTPropertySheet's 
// tooltip control for processing.
BOOL CMyTTPropertySheet::PreTranslateMessage(MSG* pMsg)
{
   if (NULL != m_pToolTipCtrl)
      m_pToolTipCtrl->RelayEvent(pMsg);

   return CPropertySheet::PreTranslateMessage(pMsg);
}

CPropertySheet::m_psh

멤버가 .의 PROPSHEETHEADER특성을 저장하는 구조체입니다.

설명

이 구조체를 사용하여 생성된 후 멤버 함수와 함께 DoModal 표시되기 전에 속성 시트의 모양을 초기화합니다. 예를 들어 속성 시트에 dwSize m_psh 사용할 크기로 멤버를 설정합니다.

멤버 목록을 포함하여 이 구조에 대한 자세한 내용은 Windows SDK를 참조 PROPSHEETHEADER 하세요.

예시

// This code fragment shows how to change CPropertySheet's settings 
// before it is shown.  After the changes, CPropertySheet has the 
// caption "Simple Properties", no "Apply" button, and the 
// second page (CColorPage) initially on top.  

CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));

CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);

dlgPropertySheet.m_psh.dwFlags |= PSH_NOAPPLYNOW | PSH_PROPTITLE;
dlgPropertySheet.m_psh.pszCaption = _T("Simple");
dlgPropertySheet.m_psh.nStartPage = 1;

dlgPropertySheet.DoModal();

CPropertySheet::MapDialogRect

사각형의 대화 상자 단위를 화면 단위로 변환합니다.

void MapDialogRect(LPRECT lpRect) const;

매개 변수

lpRect
변환할 RECT 대화 상자 좌표를 포함하는 구조체 또는 CRect 개체를 가리킵니다.

설명

대화 상자 단위는 대화 상자 텍스트에 사용되는 글꼴에서 문자의 평균 너비와 높이에서 파생된 현재 대화 상자 기본 단위로 표시됩니다. 가로 단위 1개는 대화 상자 기본 너비 단위의 1/4이고 세로 단위는 대화 상자 기본 높이 단위의 1/8입니다.

Windows 함수는 GetDialogBaseUnits 시스템 글꼴에 대한 크기 정보를 반환하지만 리소스 정의 파일에서 DS_SETFONT 스타일을 사용하는 경우 각 속성 시트에 대해 다른 글꼴을 지정할 수 있습니다. Windows SDK에 설명된 Windows 함수는 MapDialogRect 이 대화 상자에 적절한 글꼴을 사용합니다.

멤버 함수는 MapDialogRect 대화 상자를 만들거나 상자 내에 컨트롤을 배치하는 데 사각형을 사용할 수 있도록 대화 상자 단위 lpRect 를 화면 단위(픽셀)로 바꿉니다.

CPropertySheet::OnInitDialog

속성 시트 초기화를 보강하도록 재정의합니다.

virtual BOOL OnInitDialog();

Return Value

애플리케이션이 입력 포커스를 속성 시트의 컨트롤 중 하나로 설정했는지 여부를 지정합니다. 0이 아닌 값을 반환하는 경우 OnInitDialog Windows는 입력 포커스를 속성 시트의 첫 번째 컨트롤로 설정합니다. 애플리케이션은 입력 포커스를 속성 시트의 컨트롤 중 하나로 명시적으로 설정한 경우에만 0을 반환할 수 있습니다.

설명

이 멤버 함수는 메시지에 대한 응답으로 호출됩니다 WM_INITDIALOG . 이 메시지는 속성 시트가 표시되기 직전에 발생하는 호출 중에 Create DoModal 속성 시트로 전송됩니다.

속성 시트가 초기화될 때 특수 처리를 수행해야 하는 경우 이 멤버 함수를 재정의합니다. 재정의된 버전에서 먼저 기본 클래스 OnInitDialog 를 호출하지만 반환 값을 무시합니다. 일반적으로 재정의된 멤버 함수에서 반환 TRUE 됩니다.

이 멤버 함수에는 메시지 맵 항목이 필요하지 않습니다.

CPropertySheet::PressButton

속성 시트에서 지정된 단추의 선택을 시뮬레이트합니다.

void PressButton(int nButton);

매개 변수

nButton
nButton : 누를 단추를 식별합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

  • PSBTN_BACK 뒤로 단추를 선택합니다.

  • PSBTN_NEXT 다음 단추를 선택합니다.

  • PSBTN_FINISH 마침 단추를 선택합니다.

  • PSBTN_OK 확인 단추를 선택합니다.

  • PSBTN_APPLYNOW 지금 적용 단추를 선택합니다.

  • PSBTN_CANCEL 취소 단추를 선택합니다.

  • PSBTN_HELP 도움말 단추를 선택합니다.

설명

Windows SDK Pressbutton 메시지에 대한 자세한 내용은 참조 PSM_PRESSBUTTON 하세요.

호출은 PressButton 속성 페이지에서 프레임워크로 알림을 보내지 PSN_APPLY 않습니다. 이 알림을 보내려면 다음을 호출합니다 CPropertyPage::OnOK.

예시

// Simulate the selection of OK and Cancel buttons when Alt+K and
// Alt+C are pressed.  CMyPropertySheet is a CPropertySheet-derived 
// class.
BOOL CMyPropertySheet::PreTranslateMessage(MSG* pMsg)
{
   if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
   {
      BOOL altkey = GetKeyState(VK_MENU) < 0;
      if (altkey)
      {
         BOOL handled = TRUE;
         switch (toupper((int)pMsg->wParam))
         {
         case 'C':                     // for Alt+C - Cancel button
            PressButton(PSBTN_CANCEL);   // or EndDialog(IDCANCEL);
            break;

         case 'K':                     // for Alt+K - OK button
            PressButton(PSBTN_OK);      // or EndDialog(IDOK);
            break;

         default:
            handled = FALSE;
         }

         if (handled)
            return TRUE;
      }
   }

   return CPropertySheet::PreTranslateMessage(pMsg);
}

CPropertySheet::RemovePage

속성 시트에서 페이지를 제거하고 연결된 창을 삭제합니다.

void RemovePage(CPropertyPage* pPage);
void RemovePage(int nPage);

매개 변수

pPage
속성 시트에서 제거할 페이지를 가리킵니다. 다음의 NULL 일 수 없습니다.

nPage
제거할 페이지의 인덱스입니다. 속성 시트의 페이지 수보다 0에서 1 사이여야 합니다( 포함).

설명

CPropertyPage 창 소유자가 CPropertySheet 닫을 때까지 개체 자체는 제거되지 않습니다.

CPropertySheet::SetActivePage

활성 페이지를 변경합니다.

BOOL SetActivePage(int nPage);
BOOL SetActivePage(CPropertyPage* pPage);

매개 변수

nPage
설정할 페이지의 인덱스입니다. 속성 시트의 페이지 수(포함)보다 0에서 1 사이여야 합니다.

pPage
속성 시트에서 설정할 페이지를 가리킵니다. 을(를) 사용할 NULL수 없습니다.

Return Value

속성 시트가 성공적으로 활성화된 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

예를 들어 한 페이지에서 사용자의 작업으로 인해 다른 페이지가 활성 페이지가 되는 경우에 사용합니다 SetActivePage .

예시

CPropertySheet::GetActivePage에 대한 예를 참조하세요.

CPropertySheet::SetFinishText

마침 명령 단추의 텍스트를 설정합니다.

void SetFinishText(LPCTSTR lpszText);

매개 변수

lpszText
마침 명령 단추에 표시할 텍스트를 가리킵니다.

설명

마법사의 마지막 페이지에서 사용자가 작업을 완료한 후 마침 명령 단추에 텍스트를 표시하고 다음 및 뒤로 단추를 숨기려면 호출 SetFinishText 합니다.

예시

// CShapePage is the last wizard property page. Enable the Back 
// button and change the Next button to Finish. The "Finish" button 
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
   CPropertySheet* psheet = (CPropertySheet*)GetParent();
   psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
   psheet->SetFinishText(_T("Done"));

   return CPropertyPage::OnSetActive();
}

CPropertySheet::SetTitle

속성 시트의 캡션(프레임 창의 제목 표시줄에 표시되는 텍스트)을 지정합니다.

void SetTitle(
    LPCTSTR lpszText,
    UINT nStyle = 0);

매개 변수

nStyle
속성 시트 제목의 스타일을 지정합니다. 스타일은 0 또는 으로 PSH_PROPTITLE지정해야 합니다. 스타일을 로 설정하면 캡션으로 PSH_PROPTITLE지정된 텍스트 다음에 "Properties"라는 단어가 나타납니다. 예를 들어 호출 SetTitle("Simple", PSH_PROPTITLE)을 호출하면 "단순 속성"이라는 속성 시트 캡션이 생성됩니다.

lpszText
속성 시트의 제목 표시줄에서 캡션으로 사용할 텍스트를 가리킵니다.

설명

기본적으로 속성 시트는 속성 시트 생성자의 캡션 매개 변수를 사용합니다.

예시

// Declare a CPropertySheet object with a caption "Simple PropertySheet".
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));

// Add three pages to the CPropertySheet object. CStylePage, CColorPage,
// and CShapePage are CPropertyPage-derived classes created
// by the Add Class wizard.
CStylePage     stylePage;
CColorPage     colorPage;
CShapePage     shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);

// Change the caption of the CPropertySheet object 
// from "Simple PropertySheet" to "Simple Properties".
dlgPropertySheet.SetTitle(_T("Simple"), PSH_PROPTITLE);

// Show the CPropertySheet object as MODAL.
dlgPropertySheet.DoModal();

CPropertySheet::SetWizardButtons

마법사 속성 시트에서 뒤로, 다음 또는 마침 단추를 사용하거나 사용하지 않도록 설정합니다.

void SetWizardButtons(DWORD dwFlags);

매개 변수

dwFlags
마법사 단추의 함수 및 모양을 사용자 지정하는 플래그 집합입니다. 이 매개 변수는 다음 값의 조합일 수 있습니다.

  • PSWIZB_BACK 뒤로 단추

  • PSWIZB_NEXT 다음 단추

  • PSWIZB_FINISH 마침 단추

  • PSWIZB_DISABLEDFINISH 사용 안 함 마침 단추

설명

대화 상자가 열린 후에만 호출 SetWizardButtons 합니다. 호출DoModal하기 전에 호출 SetWizardButtons 할 수 없습니다. 일반적으로 .에서 CPropertyPage::OnSetActive호출 SetWizardButtons 해야 합니다.

마침 단추의 텍스트를 변경하거나 사용자가 마법사를 완료한 후 다음 및 뒤로 단추를 숨기려면 호출 SetFinishText합니다. 마침 및 다음에 대해 동일한 단추가 공유됩니다. 마침 또는 다음 단추를 한 번에 표시할 수 있지만 둘 다 표시할 수는 없습니다.

예시

A CPropertySheet 에는 세 개의 마법사 속성 페이지가 CColorPageCShapePage있습니다CStylePage. 아래 코드 조각에서는 마법사 속성 페이지에서 뒤로다음 단추를 사용하거나 사용하지 않도록 설정하는 방법을 보여 줍니다.

// CStylePage is the first wizard property page.  Disable the Back 
// button but enable the Next button.
BOOL CStylePage::OnSetActive() 
{
   CPropertySheet* psheet = (CPropertySheet*) GetParent();   
   psheet->SetWizardButtons(PSWIZB_NEXT);
   
   return CPropertyPage::OnSetActive();
}

 

// CColorPage is the second wizard property page. Enable both the 
// Back button and the Next button.
BOOL CColorPage::OnSetActive()
{
   CPropertySheet* psheet = (CPropertySheet*)GetParent();
   psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);

   return CPropertyPage::OnSetActive();
}

 

// CShapePage is the last wizard property page. Enable the Back 
// button and change the Next button to Finish. The "Finish" button 
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
   CPropertySheet* psheet = (CPropertySheet*)GetParent();
   psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
   psheet->SetFinishText(_T("Done"));

   return CPropertyPage::OnSetActive();
}

CPropertySheet::SetWizardMode

속성 페이지를 마법사로 설정합니다.

void SetWizardMode();

설명

마법사 속성 페이지의 주요 특징은 사용자가 탭 대신 다음 또는 마침, 뒤로 및 취소 단추를 사용하여 탐색한다는 것입니다.

를 호출하기 전에 호출 SetWizardMode DoModal합니다. 호출 SetWizardModeDoModal 한 후에는 ID_WIZFINISH (사용자가 마침 단추로 닫는 경우) 또는 IDCANCEL.

SetWizardMode 는 플래그를 PSH_WIZARD 설정합니다.

예시

CPropertySheet sheet(_T("Simple PropertySheet"));

CStylePage pageStyle;
CColorPage pageColor;
CShapePage pageShape;

sheet.AddPage(&pageStyle);
sheet.AddPage(&pageColor);
sheet.AddPage(&pageShape);

sheet.SetWizardMode();

sheet.DoModal();

참고 항목

MFC 샘플 CMNCTRL1
MFC 샘플 CMNCTRL2
MFC 샘플 PROPDLG
MFC 샘플 SNAPVW
CWnd 클래스
계층 구조 차트