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 |