다음을 통해 공유


CMFCOutlookBar 클래스

Microsoft Outlook 2000 또는 Outlook 2003의 탐색 창 과 시각적으로 유사한 탭 창입니다. 개체에는 CMFCOutlookBar CMFCOutlookBarTabCtrl 클래스 개체와 일련의 탭이 포함됩니다. 탭은 CMFCOutlookBarPane 클래스 개체 또는 CWnd파생 개체일 수 있습니다. Outlook 표시줄은 사용자에게 일련의 단추와 표시 영역으로 나타납니다. 사용자가 단추를 클릭하면 해당 컨트롤 또는 단추 창이 표시됩니다.

구문

class CMFCOutlookBar : public CBaseTabbedPane

멤버

공용 생성자

속성 설명
CMFCOutlookBar::CMFCOutlookBar 기본 생성자입니다.
CMFCOutlookBar::~CMFCOutlookBar 소멸자

공용 메서드

이름 설명
CMFCOutlookBar::AllowDestroyEmptyTabbedPane 빈 탭 창을 제거할 수 있는지 여부를 지정합니다. (재정의 CBaseTabbedPane::AllowDestroyEmptyTabbedPane.)
CMFCOutlookBar::CanAcceptPane 다른 창을 Outlook 표시줄 창에 도킹할 수 있는지 여부를 결정합니다. (CDockablePane::CanAcceptPane을 재정의합니다.)
CMFCOutlookBar::CanSetCaptionTextToTabName 탭 창의 캡션에 현재 탭과 동일한 텍스트가 표시되는지 여부를 결정합니다. (CBaseTabbedPane::CanSetCaptionTextToTabName을 재정의합니다.)
CMFCOutlookBar::Create Outlook 표시줄 컨트롤을 만듭니다.
CMFCOutlookBar::CreateCustomPage 사용자 지정 Outlook 표시줄 탭을 만듭니다.
CMFCOutlookBar::CreateObject 프레임워크에서 이 클래스 형식의 동적 인스턴스를 만드는 데 사용합니다.
CMFCOutlookBar::D oesAllowDynInsertBefore 사용자가 Outlook 표시줄의 바깥 가장자리에서 컨트롤 막대를 도킹할 수 있는지 여부를 결정합니다.
CMFCOutlookBar::FloatTab 창이 현재 분리 가능한 탭에 있는 경우에만 창을 부동합니다. (CBaseTabbedPane::FloatTab을 재정의합니다.)
CMFCOutlookBar::GetButtonsFont Outlook 표시줄 단추에 있는 텍스트의 글꼴을 반환합니다.
CMFCOutlookBar::GetTabArea Outlook 표시줄에서 탭 영역의 크기와 위치를 반환합니다. (재정의 CBaseTabbedPane::GetTabArea.)
CMFCOutlookBar::GetThisClass 프레임워크에서 이 클래스 형식과 연결된 CRuntimeClass 개체에 대한 포인터를 가져오는 데 사용됩니다.
CMFCOutlookBar::IsMode2003 Outlook 표시줄의 동작이 Microsoft Office Outlook 2003의 동작과 유사한지 여부를 결정합니다(설명 참조).
CMFCOutlookBar::OnAfterAnimation 애니메이션을 사용하여 활성 탭이 설정된 후 CMFCOutlookBarTabCtrl::SetActiveTab에 의해 호출됩니다.
CMFCOutlookBar::OnBeforeAnimation 애니메이션을 사용하여 탭 페이지가 활성 탭으로 설정되기 전에 CMFCOutlookBarTabCtrl::SetActiveTab에서 호출됩니다.
CMFCOutlookBar::OnScroll Outlook 표시줄이 위아래로 스크롤되는 경우 프레임워크에서 호출됩니다.
CMFCOutlookBar::RemoveCustomPage 사용자 지정 Outlook 표시줄 탭을 제거합니다.
CMFCOutlookBar::SetButtonsFont Outlook 표시줄 단추에 있는 텍스트의 글꼴을 설정합니다.
CMFCOutlookBar::SetMode2003 Outlook 표시줄의 동작이 Outlook 2003의 동작과 유사한지 여부를 지정합니다(주의 참조).

설명

Outlook 표시줄의 예제는 OutlookDemo 샘플: MFC OutlookDemo 애플리케이션을 참조 하세요.

Outlook 표시줄 구현

애플리케이션에서 CMFCOutlookBar 컨트롤을 사용하려면 다음 단계를 수행합니다.

  1. CMFCOutlookBar 개체를 주 프레임 창 클래스에 포함합니다.

    class CMainFrame : public CMDIFrameWnd
    {
        // ...
        CMFCOutlookBar m_wndOutlookBar;
        CMFCOutlookBarPane m_wndOutlookPane;
        // ...
    };
    
  2. 주 프레임에서 WM_CREATE 메시지를 처리할 때 CMFCOutlookBar::Create 메서드를 호출하여 Outlook 표시줄 탭 컨트롤을 만듭니다.

    m_wndOutlookBar.Create (_T("Shortcuts"),
        this,
        CRect (0, 0, 100, 100),
        ID_VIEW_OUTLOOKBAR,
        WS_CHILD | WS_VISIBLE | CBRS_LEFT);
    
  3. CBaseTabbedPane::GetUnderlyingWindow를 사용하여 기본 CMFCOutlookBarTabCtrl 에 대한 포인터를 가져옵니다.

    CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*) m_wndOutlookBar.GetUnderlyingWindow ();
    
  4. 단추가 포함된 각 탭에 대한 CMFCOutlookBarPane 클래스 개체를 만듭니다.

    m_wndOutlookPane.Create(&m_wndOutlookBar,
        AFX_DEFAULT_TOOLBAR_STYLE,
        ID_OUTLOOK_PANE_GENERAL,
        AFX_CBRS_FLOAT | AFX_CBRS_RESIZE);
    
    // make the Outlook pane detachable (enable docking)
    m_wndOutlookPane.EnableDocking(CBRS_ALIGN_ANY);
    
    // add buttons
    m_wndOutlookPane.AddButton(theApp.LoadIcon (IDR_MAINFRAME),
        "About",
        ID_APP_ABOUT);
    
    m_wndOutlookPane.AddButton (theApp.LoadIcon (IDR_CUSTOM_OPEN_ICON),
        "Open",
        ID_FILE_OPEN);
    
  5. CMFCOutlookBarTabCtrl::AddTab을 호출하여 각 새 탭을 추가합니다. 페이지를 분리할 수 없도록 bDetachable 매개 변수를 FALSE로 설정합니다. 또는 CMFCOutlookBarTabCtrl::AddControl을 사용하여 분리 가능한 페이지를 추가합니다.

    pOutlookBar->AddTab (&m_wndOutlookPane, "General", (UINT) -1, TRUE);
    
  6. 파생 컨트롤(예: CMFCShellTreeCtrl 클래스)을 탭으로 추가CWnd하려면 컨트롤을 만들고 CMFCOutlookBarTabCtrl::AddTab을 호출하여 Outlook 표시줄에 추가합니다.

참고 항목

각 CMFCOutlookBarPane 클래스 개체 및 각 CWnd파생 개체에 대해 고유한 컨트롤 ID를 사용해야 합니다.

런타임에 새 페이지를 동적으로 추가하거나 삭제하려면 CMFCOutlookBar::CreateCustomPage 및 CMFCOutlookBar::RemoveCustomPage를 사용합니다.

Outlook 2003 모드

Outlook 2003 모드에서는 탭 단추가 Outlook 표시줄 창 아래쪽에 배치됩니다. 단추를 표시할 공간이 충분하지 않으면 창 아래쪽의 도구 모음과 같은 영역에 아이콘으로 표시됩니다.

CMFCOutlookBar::SetMode2003을 사용하여 Outlook 2003 모드를 사용하도록 설정합니다. CMFCOutlookBarTabCtrl::SetToolbarImageList를 사용하여 Outlook 표시줄 아래쪽에 표시되는 아이콘이 포함된 비트맵을 설정합니다. 비트맵의 아이콘은 탭 인덱스별로 정렬되어야 합니다.

상속 계층 구조

CObject

CCmdTarget

CWnd

CBasePane

CPane

CDockablePane

CBaseTabbedPane

CMFCOutlookBar

요구 사항

헤더: afxoutlookbar.h

CMFCOutlookBar::AllowDestroyEmptyTabbedPane

빈 탭 창을 제거할 수 있는지 여부를 지정합니다.

virtual BOOL AllowDestroyEmptyTabbedPane() const;

Return Value

빈 탭 창을 제거할 수 있으면 TRUE입니다. 그렇지 않으면 FALSE입니다. 기본 구현은 항상 TRUE를 반환합니다.

설명

빈 탭 창을 제거할 수 없는 경우 프레임워크는 대신 숨깁니다.

CMFCOutlookBar::CanAcceptPane

다른 창을 Outlook 표시줄 창에 도킹할 수 있는지 여부를 결정합니다.

virtual BOOL CanAcceptPane(const CBasePane* pBar) const;

매개 변수

pBar
[in] 이 창에 도킹되는 다른 창에 대한 포인터입니다.

Return Value

다른 창을 Outlook 표시줄 창에 도킹할 수 있으면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

Outlook 표시줄이 Outlook 2003 모드인 경우 도킹이 지원되지 않으므로 반환 값은 FALSE입니다.

pBar 매개 변수가 NULL이면 이 메서드는 FALSE를 반환합니다.

그렇지 않으면 이 메서드는 기본 메서드 CBasePane::CanAcceptPane으로 동작합니다. 단, 도킹을 사용하도록 설정하지 않은 경우에도 Outlook 표시줄에서 다른 Outlook 막대를 도킹할 수 있습니다.

CMFCOutlookBar::CanSetCaptionTextToTabName

탭 창의 캡션에 활성 탭과 동일한 텍스트가 표시되는지 여부를 결정합니다.

virtual BOOL CanSetCaptionTextToTabName() const;

Return Value

True이면 Outlook 표시줄 창 캡션이 활성 탭의 텍스트로 자동 설정됩니다. 그렇지 않으면 FALSE입니다.

설명

CBaseTabbedPane::EnableSetCaptionTextToTabName을 사용하여 이 기능을 사용하거나 사용하지 않도록 설정합니다.

Outlook 2003 모드에서는 이 설정이 항상 사용하도록 설정됩니다.

CMFCOutlookBar::Create

Outlook 표시줄 컨트롤을 만듭니다.

virtual BOOL Create(
    LPCTSTR lpszCaption,
    CWnd* pParentWnd,
    const RECT& rect,
    UINT nID,
    DWORD dwStyle,
    DWORD dwControlBarStyle=AFX_CBRS_RESIZE,
    CCreateContext* pContext=NULL);

매개 변수

lpszCaption
[in] 창 캡션을 지정합니다.

pParentWnd
[in] 부모 창에 대한 포인터를 지정합니다. NULL이 아니어야 합니다.

rect
[in] Outlook 막대 크기 및 위치를 픽셀 단위로 지정합니다.

nID
[in] 컨트롤 ID를 지정합니다. 애플리케이션에서 사용되는 다른 컨트롤 ID와 구별되어야 합니다.

dwStyle
[in] 원하는 컨트롤 막대 스타일을 지정합니다. 가능한 값은 창 스타일을 참조 하세요.

dwControlBarStyle
[in] 특수 라이브러리 정의 스타일을 지정합니다.

pContext
[in] 컨텍스트를 만듭니다.

Return Value

메서드가 성공하면 0이 아닌 경우 그렇지 않으면 0입니다.

설명

두 단계로 개체를 CMFCOutlookBar 생성합니다. 먼저 생성자를 호출한 다음 호출 Create합니다. 그러면 Outlook 막대 컨트롤이 만들어지고 개체에 CMFCOutlookBar 연결됩니다.

dwControlBarStyle에서 지정할 사용 가능한 라이브러리 정의 스타일 목록은 CBasePane::CreateEx를 참조하세요.

예시

다음 예제에서는 클래스의 메서드를 Create 사용 하는 방법을 보여 줍니다 CMFCOutlookBar . 이 코드 조각은 Outlook 다중 보기 샘플일부입니다.

CMFCOutlookBar m_wndShortcutsBar;
// int nInitialWidth
// CString strCaption
if (!m_wndShortcutsBar.Create(strCaption, this,
                              CRect(0, 0, nInitialWidth, nInitialWidth),
                              ID_VIEW_OUTLOOKBAR, WS_CHILD | WS_VISIBLE | CBRS_LEFT))
{
   TRACE0("Failed to create outlook bar\n");
   return FALSE; // fail to create
}

CMFCOutlookBar::CreateCustomPage

사용자 지정 Outlook 표시줄 탭을 만듭니다.

CMFCOutlookBarPane* CreateCustomPage(
    LPCTSTR lpszPageName,
    BOOL bActivatePage=TRUE,
    DWORD dwEnabledDocking=CBRS_ALIGN_ANY,
    BOOL bEnableTextLabels=TRUE);

매개 변수

lpszPageName
[in] 페이지 레이블입니다.

bActivatePage
[in] TRUE이면 생성 시 페이지가 활성화됩니다.

dwEnabledDocking
[in] 페이지가 분리될 때 활성화된 도킹 측면을 지정하는 CBRS_ALIGN_ 플래그의 조합입니다.

bEnableTextLabels
[in] TRUE이면 페이지에 있는 단추에 텍스트 레이블을 사용할 수 있습니다.

Return Value

새로 만든 페이지에 대한 포인터이거나, 생성에 실패한 경우 NULL입니다.

설명

사용자가 사용자 지정 Outlook 막대 페이지를 만들 수 있도록 하려면 이 방법을 사용합니다. 애플리케이션당 최대 100페이지를 만들 수 있습니다. 페이지 컨트롤 ID는 0xF000 시작합니다. 사용자 지정 Outlook 막대 페이지의 총 수가 100을 초과하면 생성에 실패합니다.

CMFCOutlookBar::RemoveCustomPage를 사용하여 사용자 지정 페이지를 삭제합니다.

CMFCOutlookBar::D oesAllowDynInsertBefore

사용자가 Outlook 표시줄의 바깥 가장자리에서 창을 도킹할 수 있는지 여부를 지정합니다.

DECLARE_MESSAGE_MAP virtual BOOL DoesAllowDynInsertBefore() const;

Return Value

기본 구현은 FALSE를 반환합니다.

설명

프레임워크는 동적 창을 도킹할 위치를 찾은 경우 메서드를 호출 DoesAllowDynInsertBefore 합니다. 함수가 FALSE를 반환하는 경우 프레임워크는 창의 바깥 가장자리에서 동적 창의 도킹을 허용하지 않습니다.

일반적으로 Outlook 막대를 고정 비 부동 컨트롤로 만듭니다. 파생 클래스에서 이 함수를 재정의하고 TRUE를 반환하여 이 동작을 변경할 수 있습니다.

참고 항목

동적 창은 도킹할 때 도킹된 정적 창의 상태를 확인하므로 가능하면 정적 창 뒤의 동적 창을 도킹해야 합니다.

CMFCOutlookBar::FloatTab

창을 부동합니다.

virtual BOOL FloatTab(
    CWnd* pBar,
    int nTabID,
    AFX_DOCK_METHOD dockMethod,
    BOOL bHide);

매개 변수

pBar
[in] 부동 창에 대한 포인터입니다.

nTabID
[in] 부동 탭의 인덱스(0부터 시작하는 인덱스)입니다.

dockMethod
[in] 창을 부동으로 만드는 데 사용할 메서드를 지정합니다. 자세한 내용은 CBaseTabbedPane::FloatTab을 참조 하세요.

bHide
[in] 부동하기 전에 창을 숨기려면 TRUE입니다. 그렇지 않으면 FALSE입니다. 이 메서드의 기본 클래스 버전과 달리 이 매개 변수에는 기본값이 없습니다.

Return Value

창이 부동하면 TRUE입니다. 그렇지 않으면 FALSE입니다.

설명

이 메서드는 CBaseTabbedPane::FloatTab과 비슷하지만 Outlook 표시줄 컨트롤의 마지막 남은 탭을 부동으로 설정하지는 않습니다.

CMFCOutlookBar::GetButtonsFont

Outlook 표시줄의 페이지 단추 탭에 있는 텍스트의 글꼴을 반환합니다.

CFont* GetButtonsFont() const;

Return Value

Outlook 표시줄 페이지 단추 탭에 텍스트를 표시하는 데 사용되는 글꼴 개체에 대한 포인터입니다.

설명

이 함수를 사용하여 Outlook 페이지 단추 탭에 텍스트를 표시하는 데 사용되는 글꼴을 검색합니다. CMFCOutlookBar::SetButtonsFont호출하여 글꼴을 설정할 수 있습니다.

CMFCOutlookBar::GetTabArea

Outlook 표시줄에서 탭 영역의 크기와 위치를 결정합니다.

virtual void GetTabArea(
    CRect& rectTabAreaTop,
    CRect& rectTabAreaBottom) const;

매개 변수

rectTabAreaTop
[out] 함수가 반환되는 경우 위쪽 탭 영역의 크기 및 위치(클라이언트 좌표)를 포함합니다.

rectTabAreaBottom
[out] 함수가 반환되는 경우 아래쪽 탭 영역의 크기 및 위치(클라이언트 좌표)를 포함합니다.

설명

프레임워크는 이 메서드를 호출하여 대상 창에 대한 도킹 유형을 결정합니다. 프레임워크에서 사용자가 대상 창의 탭 영역 위에 도킹할 창을 끌도록 결정하면 첫 번째 창을 대상 창의 새 탭으로 추가하려고 합니다. 그렇지 않으면 대상 창의 적절한 쪽에 첫 번째 창을 도킹하려고 합니다. 프레임워크는 도킹된 추가 창을 수용하기 위해 슬라이더를 사용하여 새 컨테이너를 만듭니다.

기본 구현 GetTabArea 은 Outlook 표시줄이 정적이면 Outlook 표시줄의 전체 클라이언트 영역을 반환합니다. 즉, Outlook 표시줄을 부동할 수 없는 경우입니다. 그렇지 않으면 페이지 단추가 Outlook 표시줄 컨트롤의 위쪽과 아래쪽에 있는 영역을 반환합니다.

이 동작을 변경하기 위해 파생된 클래스에서 이 메서드를 재정의 CMFCOutlookBar 합니다.

CMFCOutlookBar::IsMode2003

Outlook 표시줄의 동작이 Microsoft Office Outlook 2003의 동작과 유사한지 여부를 지정합니다.

BOOL IsMode2003() const;

Return Value

Outlook 표시줄이 Microsoft Office 2003 모드에서 실행되는 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

CMFCOutlookBar::SetMode2003을 사용하여 이 모드를 사용하도록 설정할 수 있습니다.

CMFCOutlookBar::OnAfterAnimation

애니메이션을 사용하여 활성 탭이 설정된 후 CMFCOutlookBarTabCtrl::SetActiveTab에 의해 호출됩니다.

virtual void OnAfterAnimation(int nPage);

매개 변수

nPage
[in] 활성화된 탭 페이지의 인덱스(0부터 시작하는 인덱스)입니다.

설명

활성 탭 설정의 시각적 효과는 애니메이션을 사용하도록 설정했는지 여부에 따라 달라집니다. 자세한 내용은 CMFCOutlookBarTabCtrl::EnableAnimation을 참조하세요.

CMFCOutlookBar::OnBeforeAnimation

애니메이션을 사용하여 탭 페이지가 활성 탭으로 설정되기 전에 CMFCOutlookBarTabCtrl::SetActiveTab에서 호출됩니다.

virtual BOOL OnBeforeAnimation(int nPage);

매개 변수

nPage
[in] 활성으로 설정하려는 탭 페이지의 인덱스(0부터 시작)입니다.

Return Value

새 활성 탭을 설정하는 데 애니메이션을 사용해야 하는 경우 TRUE를 반환하고, 애니메이션을 사용하지 않도록 설정해야 하는 경우 FALSE를 반환합니다.

설명

CMFCOutlookBar::OnScroll

Outlook 표시줄이 위아래로 스크롤되는 경우 프레임워크에서 호출됩니다.

virtual void OnScroll(BOOL bDown);

매개 변수

bDown
[in] Outlook 표시줄이 아래로 스크롤되는 경우 TRUE이고, 위로 스크롤하는 경우 FALSE입니다.

설명

CMFCOutlookBar::RemoveCustomPage

사용자 지정 Outlook 표시줄 탭 페이지를 제거합니다.

BOOL RemoveCustomPage(
    UINT uiPage,
    CMFCOutlookBarTabCtrl* pTargetWnd);

매개 변수

uiPage
[in] 부모 Outlook 창에 있는 페이지의 인덱스(0부터 시작하는 인덱스)입니다.

pTargetWnd
[in] 부모 Outlook 창에 대한 포인터입니다.

Return Value

사용자 지정 페이지가 성공적으로 제거된 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

사용자 지정 페이지를 삭제하려면 이 함수를 호출합니다. 페이지가 제거되면 컨트롤 ID가 사용 가능한 ID 풀로 반환됩니다.

제거할 페이지가 현재 있는 CMFCOutlookBarTabCtrl 클래스 개체에 대한 포인터를 제공해야 합니다. 사용자가 서로 다른 Outlook 막대 간에 분리 가능한 페이지를 이동할 수 있지만 사용자 지정 페이지에 대한 정보는 CMFCOutlookBar::CreateCustomPage를 호출한 Outlook 표시줄 개체에 있습니다.

CBaseTabbedPane::GetUnderlyingWindow를 사용하여 Outlook 창에 대한 포인터를 가져옵니다.

CMFCOutlookBar::SetButtonsFont

Outlook 표시줄 단추에 있는 텍스트의 글꼴을 설정합니다.

void SetButtonsFont(
    CFont* pFont,
    BOOL bRedraw=TRUE);

매개 변수

pFont
[in] 새 글꼴을 지정합니다.

bRedraw
[in] TRUE이면 Outlook 표시줄이 다시 그려지게 됩니다.

설명

Outlook 탭 페이지 단추에 표시되는 텍스트의 글꼴을 설정하려면 이 메서드를 사용합니다.

CMFCOutlookBar::SetMode2003

Outlook 표시줄의 동작이 Outlook 2003의 동작과 유사한지 여부를 지정합니다.

void SetMode2003(BOOL bMode2003=TRUE);

매개 변수

bMode2003
[in] TRUE이면 Office 2003 모드를 사용할 수 있습니다.

설명

이 함수를 사용하여 Office 2003 모드를 사용하거나 사용하지 않도록 설정합니다. 이 모드에서는 Outlook 표시줄에 사용자 지정 단추가 있는 추가 도구 모음이 있습니다. Outlook 표시줄의 동작은 Microsoft Office 2003의 Outlook 표시줄 동작을 준수합니다.

기본적으로 이 모드는 사용하지 않도록 설정됩니다.

참고 항목

CMFCOutlookBar::Create 전에 이 함수를 호출해야 합니다.

참고 항목

계층 구조 차트
클래스
CBaseTabbedPane 클래스
CMFCOutlookBarTabCtrl 클래스
CMFCOutlookBarPane 클래스