Partager via


IUIFramework ::Initialize, méthode (uiribbon.h)

Connecte l’application hôte à l’infrastructure du ruban Windows.

Syntaxe

HRESULT Initialize(
  [in] HWND           frameWnd,
  [in] IUIApplication *application
);

Paramètres

[in] frameWnd

Type : HWND

Gérez vers la fenêtre de niveau supérieur qui contiendra le ruban.

[in] application

Type : IUIApplication*

Pointeur vers l’implémentation IUIApplication de l’application hôte.

Valeur retournée

Type : HRESULT

Retourne S_OK en cas de réussite ; sinon, une valeur d’erreur de la liste suivante.

Valeur Description
HRESULT_FROM_WIN32(ERROR_INVALID_WINDOW_HANDLE) frameWnd a la valeur NULL, ne pointe pas vers une fenêtre existante ou n’est pas une fenêtre de niveau supérieur du bureau.
Note Cette erreur est également retournée si frameWnd est une fenêtre enfant (WS_CHILD), est déclaré en tant que fenêtre outil (WS_EX_TOOLWINDOW) ou s’il n’a pas de propriété légende (WS_CAPTION est obligatoire).
 
HRESULT_FROM_WIN32(ERROR_WINDOW_OF_OTHER_THREAD) frameWnd n’appartient pas au thread d’exécution.
E_POINTER l’application a la valeur NULL ou un pointeur non valide.

Remarques

Cette méthode doit être appelée par l’application hôte pour chaque fenêtre de niveau supérieur qui nécessite un ruban.

Cette méthode est utilisée pour configurer les hooks qui permettent à l’infrastructure du ruban d’appeler des rappels dans l’application hôte.

Pour initialiser correctement le ruban, un fichier de balisage de ruban compilé doit être disponible en tant que ressource et spécifié dans un appel ultérieur à IUIFramework ::LoadUIUI. Ce fichier de balisage est un composant intégral de l’infrastructure ; elle spécifie les contrôles à utiliser et leur disposition.

Si IUIFramework ::Initialize retourne correctement :

  • Pour éliminer l’incohérence, la redondance et l’incompatibilité entre le ruban et les modèles de commande traditionnels, l’infrastructure du ruban supprime la barre de menus standard de la fenêtre de niveau supérieur dans l’application hôte.
  • L’infrastructure supprime les références au style WS_EX_CLIENTEDGE.
    Note Le style WS_EX_CLIENTEDGE spécifie qu’une fenêtre a une bordure avec un bord enfoncé. Ce style interfère visuellement avec l’intégration du ruban et de l’application hôte.
     
  • L’infrastructure nécessite que le style WS_SYSMENU soit activé. Si WS_SYSMENU n’est pas activé, l’infrastructure ne fournit pas d’autres fonctionnalités et un rendu imprévisible du ruban peut en résulter.
    Note Le style WS_SYSMENU spécifie que la fenêtre d’application a un menu système dans sa barre de titre. Par association, le style WS_CAPTION doit également être spécifié (voir ERROR_INVALID_WINDOW_HANDLE dans Valeurs de retour ci-dessus).
     

Exemples

L’exemple suivant illustre une fonction d’initialisation d’infrastructure de base.

//
//  FUNCTION:    InitializeFramework(HWND)
//
//  PURPOSE:    Initialize the Ribbon framework and bind a Ribbon to the application.
//
//  PARAMETERS:    
//                hWnd - Handle to the Ribbon host application window. 
//
//  COMMENTS:
//
//    In order to get a Ribbon to display, the Ribbon framework must be initialized. 
//    This involves three important steps:
//      1) Instantiate the Ribbon framework object (CLSID_UIRibbonFramework).
//      2) Pass the host HWND and IUIApplication object to the framework.
//      3) Load the binary markup compiled by the UI Command Compiler (UICC.exe).
//
//
bool InitializeFramework(HWND hWnd)
{
    // Instantiate the Ribbon framework object.
    HRESULT hr = CoCreateInstance(
        CLSID_UIRibbonFramework, 
        NULL, 
        CLSCTX_INPROC_SERVER, 
        IID_PPV_ARGS(&g_pFramework));
    if (!SUCCEEDED(hr))
    {
        return false;
    }    

    // Create the application object (IUIApplication) and call the 
    // framework Initialize method, passing the application object and the 
    // host HWND that the Ribbon will attach itself to.
    CComObject<CApplication> *pApplication = NULL;
    CComObject<CApplication>::CreateInstance(&pApplication);
    hr = pApplication->QueryInterface(&g_pApplication);
    if (!SUCCEEDED(hr))
    {
        return false;
    } 

    hr = g_pFramework->Initialize(hWnd, g_pApplication);
    if (!SUCCEEDED(hr))
    {
        return false;
    }

    // Load the binary markup.  
    // Initiate callbacks to the IUIApplication object that was 
    // provided to the framework earlier and bind command handler(s) 
    // to individual commands.
    hr = g_pFramework->LoadUI(GetModuleHandle(NULL), L"APPLICATION_RIBBON");
    if (!SUCCEEDED(hr))
    {
        return false;
    }
    return true;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête uiribbon.h
DLL Mshtml.dll

Voir aussi

IUIFramework

IUIFramework ::LoadUI

Éléments de balisage

Exemples d’infrastructure du ruban Windows