Share via


CMFCOutlookBar, classe

Volet à onglets avec l'apparence visuelle du Volet de navigation dans Microsoft Outlook 2000 et Outlook 2003. L’objet CMFCOutlookBar contient un objet CMFCOutlookBarTabCtrl, ainsi qu’une série d’onglets. Les onglets peuvent être des objets CMFCOutlookBarPane Class ou CWnddes objets dérivés. Pour l'utilisateur, la barre Outlook apparaît comme un ensemble de boutons et une zone d'affichage. Lorsque l'utilisateur clique sur un bouton, le volet de contrôle ou de bouton correspondant s'affiche.

Syntaxe

class CMFCOutlookBar : public CBaseTabbedPane

Membres

Constructeurs publics

Nom Description
CMFCOutlookBar::CMFCOutlookBar Constructeur par défaut.
CMFCOutlookBar::~CMFCOutlookBar Destructeur.

Méthodes publiques

Nom Description
CMFCOutlookBar ::AllowDestroyEmptyTabbedPane Spécifie si un volet à onglets vide peut être détruit. (Remplacements CBaseTabbedPane ::AllowDestroyEmptyTabbedPane.)
CMFCOutlookBar ::CanAcceptPane Détermine si un autre volet peut être ancré dans le volet de barre Outlook. (Remplace CDockablePane ::CanAcceptPane.)
CMFCOutlookBar ::CanSetCaptionTextToTabName Détermine si le légende du volet à onglets affiche le même texte que l’onglet actif. (Remplace CBaseTabbedPane ::CanSetCaptionTextToTabName.)
CMFCOutlookBar ::Create Crée le contrôle de barre Outlook.
CMFCOutlookBar ::CreateCustomPage Crée un onglet de barre Outlook personnalisé.
CMFCOutlookBar::CreateObject Utilisé par l'infrastructure pour créer une instance dynamique de ce type de classe.
CMFCOutlookBar ::D oesAllowDynInsertBefore Détermine si un utilisateur peut ancrer une barre de contrôle au bord externe de la barre Outlook.
CMFCOutlookBar ::FloatTab Flotte un volet, mais uniquement si le volet réside actuellement dans un onglet détachable. (Remplace CBaseTabbedPane ::FloatTab.)
CMFCOutlookBar ::GetButtonsFont Retourne la police du texte sur les boutons de la barre Outlook.
CMFCOutlookBar ::GetTabArea Retourne la taille et la position des zones d’onglet dans la barre Outlook. (Remplacements CBaseTabbedPane ::GetTabArea.)
CMFCOutlookBar::GetThisClass Utilisé par l’infrastructure pour obtenir un pointeur vers l’objet CRuntimeClass associé à ce type de classe.
CMFCOutlookBar ::IsMode2003 Détermine si le comportement de la barre Outlook imite celui de Microsoft Bureau Outlook 2003 (voir Remarques).
CMFCOutlookBar ::OnAfterAnimation Appelé par CMFCOutlookBarTabCtrl ::SetActiveTab après la définition de l’onglet actif à l’aide de l’animation.
CMFCOutlookBar ::OnBeforeAnimation Appelé par CMFCOutlookBarTabCtrl ::SetActiveTab avant qu’une page d’onglet soit définie comme onglet actif à l’aide de l’animation.
CMFCOutlookBar ::OnScroll Appelé par l’infrastructure si la barre Outlook fait défiler vers le haut ou le bas.
CMFCOutlookBar ::RemoveCustomPage Supprime un onglet de barre Outlook personnalisé.
CMFCOutlookBar ::SetButtonsFont Définit la police du texte sur les boutons de la barre Outlook.
CMFCOutlookBar ::SetMode2003 Spécifie si le comportement de la barre Outlook imite celui d’Outlook 2003 (voir Remarques).

Notes

Pour obtenir un exemple de barre Outlook, consultez l’exemple OutlookDemo : application OutlookDemo MFC.

Implémentation de la barre Outlook

Pour utiliser le contrôle CMFCOutlookBar dans votre application, procédez comme suit :

  1. Incorporez un objet CMFCOutlookBar dans la classe de fenêtre frame principale.

    class CMainFrame : public CMDIFrameWnd
    {
        // ...
        CMFCOutlookBar m_wndOutlookBar;
        CMFCOutlookBarPane m_wndOutlookPane;
        // ...
    };
    
  2. Lors du traitement du message WM_CREATE dans le cadre principal, appelez la méthode CMFCOutlookBar ::Create pour créer le contrôle d’onglet de barre Outlook.

    m_wndOutlookBar.Create (_T("Shortcuts"),
        this,
        CRect (0, 0, 100, 100),
        ID_VIEW_OUTLOOKBAR,
        WS_CHILD | WS_VISIBLE | CBRS_LEFT);
    
  3. Obtenez un pointeur vers le sous-jacent CMFCOutlookBarTabCtrl à l’aide de CBaseTabbedPane ::GetUnderlyingWindow.

    CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*) m_wndOutlookBar.GetUnderlyingWindow ();
    
  4. Créez un objet CMFCOutlookBarPane Class pour chaque onglet qui contient des boutons.

    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. Appelez CMFCOutlookBarTabCtrl ::AddTab pour ajouter chaque nouvel onglet. Définissez le paramètre bDetachable sur FALSE pour rendre une page non détachable. Vous pouvez également utiliser CMFCOutlookBarTabCtrl ::AddControl pour ajouter des pages détachables.

    pOutlookBar->AddTab (&m_wndOutlookPane, "General", (UINT) -1, TRUE);
    
  6. Pour ajouter un CWndcontrôle dérivé (par exemple, CMFCShellTreeCtrl, classe) sous forme d’onglet, créez le contrôle et appelez CMFCOutlookBarTabCtrl ::AddTabTab pour l’ajouter à la barre Outlook.

Remarque

Vous devez utiliser des ID de contrôle uniques pour chaque objet CMFCOutlookBarPane Class et pour chaque CWndobjet dérivé.

Pour ajouter ou supprimer dynamiquement de nouvelles pages au moment de l’exécution, utilisez CMFCOutlookBar ::CreateCustomPage et CMFCOutlookBar ::RemoveCustomPage.

Outlook 2003 Mode

En mode Outlook 2003, les boutons d’onglet sont positionnés en bas du volet de barre Outlook. Lorsqu’il n’y a pas suffisamment de place pour afficher les boutons, ils sont affichés en tant qu’icônes dans une zone de type barre d’outils le long du bas du volet.

Utilisez CMFCOutlookBar ::SetMode2003 pour activer le mode Outlook 2003. Utilisez CMFCOutlookBarTabCtrl ::SetToolbarImageList pour définir la bitmap qui contient les icônes affichées en bas de la barre Outlook. Les icônes de la bitmap doivent être classées par index de tabulation.

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CBasePane

CPane

CDockablePane

CBaseTabbedPane

CMFCOutlookBar

Spécifications

En-tête : afxoutlookbar.h

CMFCOutlookBar ::AllowDestroyEmptyTabbedPane

Spécifie si un volet à onglets vide peut être détruit.

virtual BOOL AllowDestroyEmptyTabbedPane() const;

Valeur de retour

TRUE si un volet à onglets vide peut être détruit ; sinon, FALSE. L’implémentation par défaut retourne toujours TRUE.

Notes

Si un volet à onglets vide ne peut pas être détruit, le framework le masque à la place.

CMFCOutlookBar ::CanAcceptPane

Détermine si un autre volet peut être ancré dans le volet de barre Outlook.

virtual BOOL CanAcceptPane(const CBasePane* pBar) const;

Paramètres

pBar
[in] Pointeur vers un autre volet qui est ancré dans ce volet.

Valeur de retour

TRUE si un autre volet peut être ancré dans le volet de barre Outlook ; sinon FALSE.

Notes

Si la barre Outlook est en mode Outlook 2003, l’ancrage n’est pas pris en charge, de sorte que la valeur de retour est FALSE.

Si le paramètre pBar est NULL, cette méthode retourne FALSE.

Sinon, cette méthode se comporte comme la méthode de base CBasePane ::CanAcceptPane, sauf que même si l’ancrage n’est pas activé, une barre Outlook peut toujours permettre à une autre barre Outlook d’être ancrée sur celle-ci.

CMFCOutlookBar ::CanSetCaptionTextToTabName

Détermine si le légende du volet à onglets affiche le même texte que l’onglet actif.

virtual BOOL CanSetCaptionTextToTabName() const;

Valeur de retour

TRUE si la fenêtre de barre Outlook légende est automatiquement définie sur le texte de l’onglet actif ; sinon FALSE.

Notes

Utilisez CBaseTabbedPane ::EnableSetCaptionTextToTabName pour activer ou désactiver cette fonctionnalité.

En mode Outlook 2003, ce paramètre est toujours activé.

CMFCOutlookBar ::Create

Crée le contrôle de barre Outlook.

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

Paramètres

lpszCaption
[in] Spécifie la fenêtre légende.

pParentWnd
[in] Spécifie un pointeur vers une fenêtre parente. Elle ne doit pas être NULL.

Rect
[in] Spécifie la taille et la position de la barre Outlook en pixels.

nID
[in] Spécifie l’ID de contrôle. Doit être distinct des autres ID de contrôle utilisés dans l’application.

dwStyle
[in] Spécifie le style de barre de contrôle souhaité. Pour connaître les valeurs possibles, consultez Styles de fenêtre.

dwControlBarStyle
[in] Spécifie les styles spéciaux définis par la bibliothèque.

pContext
[in] Créez un contexte.

Valeur de retour

Différent de zéro si la méthode réussit ; sinon 0.

Notes

Vous construisez un CMFCOutlookBar objet en deux étapes. Appelez d’abord le constructeur, puis appelez Create, qui crée le contrôle de barre Outlook et l’attache à l’objet CMFCOutlookBar .

Consultez CBasePane ::CreateEx pour obtenir la liste des styles définis par la bibliothèque disponibles à spécifier par dwControlBarStyle.

Exemple

L’exemple suivant montre comment utiliser la Create méthode de la CMFCOutlookBar classe. Cet extrait de code fait partie de l’exemple Outlook Multi Views.

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

Crée un onglet de barre Outlook personnalisé.

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

Paramètres

lpszPageName
[in] Étiquette de page.

bActivatePage
[in] Si la valeur est TRUE, la page devient active lors de la création.

dwEnabledDocking
[in] Combinaison d’indicateurs de CBRS_ALIGN_ qui spécifie les côtés d’ancrage activés lorsque la page est détachée.

bEnableTextLabels
[in] Si la valeur est TRUE, les étiquettes de texte sont activées pour les boutons qui résident sur la page.

Valeur de retour

Pointeur vers la page nouvellement créée ou NULL si la création a échoué.

Notes

Utilisez cette méthode pour permettre aux utilisateurs de créer des pages de barres Outlook personnalisées. Vous pouvez créer jusqu’à 100 pages par application. Les ID de contrôle de page commencent à partir de 0xF000. La création échoue si le nombre total de pages de barres Outlook personnalisées dépasse 100.

Utilisez CMFCOutlookBar ::RemoveCustomPage pour supprimer des pages personnalisées.

CMFCOutlookBar ::D oesAllowDynInsertBefore

Spécifie si un utilisateur peut ancrer un volet au bord externe de la barre Outlook.

DECLARE_MESSAGE_MAP virtual BOOL DoesAllowDynInsertBefore() const;

Valeur de retour

L’implémentation par défaut retourne FALSE.

Notes

L’infrastructure appelle la DoesAllowDynInsertBefore méthode lorsqu’elle recherche un emplacement pour ancrer un volet dynamique. Si la fonction retourne FALSE, l’infrastructure n’autorise pas l’ancrage d’un volet dynamique sur les bords externes du volet.

En règle générale, vous créez une barre Outlook en tant que contrôle statique non flottant. Vous pouvez remplacer cette fonction dans une classe dérivée et retourner TRUE pour modifier ce comportement.

Remarque

Étant donné que les volets dynamiques case activée l’état des volets statiques ancrés lors de l’ancrage, vous devez ancrer des volets dynamiques après les volets statiques dans la mesure du possible.

CMFCOutlookBar ::FloatTab

Flotte un volet.

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

Paramètres

pBar
[in] Pointeur vers le volet à flotter.

nTabID
[in] Index de base zéro de l’onglet à flotter.

dockMethod
[in] Spécifie la méthode à utiliser pour faire flotter le volet. Pour plus d’informations, consultez CBaseTabbedPane ::FloatTab.

bHide
[in] TRUE pour masquer le volet avant de flotter ; sinon, FALSE. Contrairement à la version de classe de base de cette méthode, ce paramètre n’a pas de valeur par défaut.

Valeur de retour

TRUE si le volet flotte ; sinon, FALSE.

Notes

Cette méthode est semblable à CBaseTabbedPane ::FloatTab , sauf qu’elle n’active pas le dernier onglet restant d’un contrôle de barre Outlook à flotter.

CMFCOutlookBar ::GetButtonsFont

Renvoie la police du texte sous les onglets des boutons de page de la barre Outlook.

CFont* GetButtonsFont() const;

Valeur de retour

Pointeur vers l’objet de police utilisé pour afficher du texte sur les onglets des boutons de la page de barre Outlook.

Notes

Utilisez cette fonction pour récupérer la police utilisée pour afficher le texte sous les onglets des boutons de page Outlook. Vous pouvez définir la police en appelant CMFCOutlookBar ::SetButtonsFont.

CMFCOutlookBar ::GetTabArea

Détermine la taille et la position des zones d’onglet dans la barre Outlook.

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

Paramètres

rectTabAreaTop
[out] Contient la taille et la position (dans les coordonnées du client) de la zone d’onglet supérieure lorsque la fonction est retournée.

rectTabAreaBottom
[out] Contient la taille et la position (dans les coordonnées du client) de la zone d’onglet inférieure lorsque la fonction est retournée.

Notes

L’infrastructure appelle cette méthode pour déterminer le type d’ancrage dans le volet cible. Lorsque l’infrastructure détermine que l’utilisateur fait glisser le volet pour être ancré sur la zone d’onglet du volet cible, il tente d’ajouter le premier volet sous la forme d’un nouvel onglet du volet cible. Sinon, il tente d’ancrer le premier volet à un côté approprié du volet cible. L’infrastructure crée un conteneur avec un curseur pour prendre en charge le volet ancré supplémentaire.

L’implémentation par défaut de GetTabArea retourne l’ensemble de la zone cliente de la barre Outlook si la barre Outlook est statique ; autrement dit, si la barre Outlook ne peut pas flotter. Sinon, elle retourne la zone que les boutons de page prennent en haut et en bas du contrôle de barre Outlook.

Remplacez cette méthode dans la classe dérivée de CMFCOutlookBar la modification de ce comportement.

CMFCOutlookBar ::IsMode2003

Spécifie si le comportement de la barre Outlook imite celui de Microsoft Bureau Outlook 2003.

BOOL IsMode2003() const;

Valeur de retour

Différent de zéro si la barre Outlook s’exécute en mode Microsoft Bureau 2003 ; sinon, 0.

Notes

Vous pouvez activer ce mode à l’aide de CMFCOutlookBar ::SetMode2003.

CMFCOutlookBar ::OnAfterAnimation

Appelé par CMFCOutlookBarTabCtrl ::SetActiveTab après la définition de l’onglet actif à l’aide de l’animation.

virtual void OnAfterAnimation(int nPage);

Paramètres

nPage
[in] Index de base zéro de la page d’onglets qui a été rendue active.

Notes

L’effet visuel de la définition de l’onglet actif dépend de l’activation de l’animation. Pour plus d’informations, consultez CMFCOutlookBarTabCtrl ::EnableAnimation.

CMFCOutlookBar ::OnBeforeAnimation

Appelé par CMFCOutlookBarTabCtrl ::SetActiveTab avant qu’une page d’onglet soit définie comme onglet actif à l’aide de l’animation.

virtual BOOL OnBeforeAnimation(int nPage);

Paramètres

nPage
[in] Index de base zéro de la page d’onglets sur le point d’être défini actif.

Valeur de retour

Retourne TRUE si l’animation doit être utilisée pour définir le nouvel onglet actif ou FALSE si l’animation doit être désactivée.

Notes

CMFCOutlookBar ::OnScroll

Appelé par l’infrastructure si la barre Outlook fait défiler vers le haut ou le bas.

virtual void OnScroll(BOOL bDown);

Paramètres

bDown
[in] TRUE si la barre Outlook fait défiler vers le bas ou FALSE s’il fait défiler vers le haut.

Notes

CMFCOutlookBar ::RemoveCustomPage

Supprime une page d’onglets de barre Outlook personnalisée.

BOOL RemoveCustomPage(
    UINT uiPage,
    CMFCOutlookBarTabCtrl* pTargetWnd);

Paramètres

uiPage
[in] Index de base zéro de la page dans la fenêtre Outlook parente.

pTargetWnd
[in] Pointeur vers la fenêtre Outlook parente.

Valeur de retour

Différent de zéro si la page personnalisée a été supprimée avec succès ; sinon 0.

Notes

Appelez cette fonction pour supprimer des pages personnalisées. Lorsque la page est supprimée, son ID de contrôle est retourné au pool d’ID disponibles.

Vous devez fournir un pointeur vers l’objet CMFCOutlookBarTabCtrl Class dans lequel la page à supprimer réside actuellement. Notez qu’un utilisateur peut déplacer des pages détachables entre différentes barres Outlook, mais les informations relatives à une page personnalisée résident dans l’objet de barre Outlook pour lequel vous avez appelé CMFCOutlookBar ::CreateCustomPage.

Utilisez CBaseTabbedPane ::GetUnderlyingWindow pour obtenir un pointeur vers la fenêtre Outlook.

CMFCOutlookBar ::SetButtonsFont

Définit la police du texte sur les boutons de la barre Outlook.

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

Paramètres

pFont
[in] Spécifie la nouvelle police.

bRedraw
[in] Si la valeur est TRUE, la barre Outlook est redessinée.

Notes

Utilisez cette méthode pour définir une police pour le texte affiché sur les boutons de page d’onglet Outlook.

CMFCOutlookBar ::SetMode2003

Spécifie si le comportement de la barre Outlook imite celui d’Outlook 2003.

void SetMode2003(BOOL bMode2003=TRUE);

Paramètres

bMode2003
[in] Si la valeur est TRUE, Bureau mode 2003 est activé.

Notes

Utilisez cette fonction pour activer ou désactiver Bureau mode 2003. Dans ce mode, la barre Outlook a une barre d’outils supplémentaire avec un bouton de personnalisation. Le comportement de la barre Outlook est conforme au comportement de la barre Outlook dans Microsoft Bureau 2003.

Par défaut, ce mode est désactivé.

Remarque

Cette fonction doit être appelée avant CMFCOutlookBar ::Create.

Voir aussi

Graphique hiérarchique
Classes
CBaseTabbedPane, classe
CMFCOutlookBarTabCtrl, classe
CMFCOutlookBarPane, classe