CPropertySheet
수업
속성 시트(탭 대화 상자라고도 함)를 나타냅니다.
구문
class CPropertySheet : public CWnd
멤버
공용 생성자
속성 | 설명 |
---|---|
CPropertySheet::CPropertySheet |
CPropertySheet 개체를 생성합니다. |
공용 메서드
공용 데이터 멤버
속성 | 설명 |
---|---|
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
방법에 대한 자세한 내용은 속성 시트 및 속성 페이지 문서를 참조하세요.
상속 계층 구조
CPropertySheet
요구 사항
머리글: afxdlgs.h
CPropertySheet::AddPage
속성 시트에서 맨 오른쪽 탭이 있는 제공된 페이지를 추가합니다.
void AddPage(CPropertyPage* pPage);
매개 변수
pPage
속성 시트에 추가할 페이지를 가리킵니다. 다음의 NULL
일 수 없습니다.
설명
표시할 왼쪽에서 오른쪽 순서로 속성 시트에 페이지를 추가합니다.
AddPage
개체의 CPropertyPage
페이지 목록에 개체를 CPropertySheet
추가하지만 실제로 페이지의 창을 만들지는 않습니다. 프레임워크는 사용자가 해당 페이지를 선택할 때까지 페이지의 창 만들기를 연기합니다.
를 사용하여 AddPage
속성 페이지를 추가할 때는 . CPropertySheet
의 CPropertyPage
부모입니다. 속성 페이지에서 속성 시트에 액세스하려면 .를 호출 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를 반환한 CPropertyPage
후 DoModal
개체에서 데이터를 검색합니다.
모덜리스 속성 시트를 표시하려면 대신 호출 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
에는 세 개의 마법사 속성 페이지가 CColorPage
CShapePage
있습니다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
합니다. 호출 SetWizardMode
DoModal
한 후에는 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
클래스
계층 구조 차트