IUIFramework::Initialize-Methode (uiribbon.h)

Stellt eine Verbindung zwischen der Hostanwendung und dem Windows-Menübandframework her.

Syntax

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

Parameter

[in] frameWnd

Typ: HWND

Handle zum Fenster der obersten Ebene, das das Menüband enthalten wird.

[in] application

Typ: IUIApplication*

Zeiger auf die IUIApplication-Implementierung der Hostanwendung.

Rückgabewert

Typ: HRESULT

Gibt bei erfolgreicher Ausführung S_OK zurück. andernfalls ein Fehlerwert aus der folgenden Liste.

Wert BESCHREIBUNG
HRESULT_FROM_WIN32(ERROR_INVALID_WINDOW_HANDLE) frameWnd ist NULL, zeigt nicht auf ein vorhandenes Fenster oder ist kein Fenster der obersten Ebene des Desktops.
Hinweis Dieser Fehler wird auch zurückgegeben, wenn frameWnd ein untergeordnetes Fenster (WS_CHILD) ist, als Toolfenster deklariert wird (WS_EX_TOOLWINDOW) oder keine Untertitel-Eigenschaft aufweist (WS_CAPTION ist obligatorisch).
 
HRESULT_FROM_WIN32(ERROR_WINDOW_OF_OTHER_THREAD) frameWnd ist nicht im Besitz des Ausführungsthreads.
E_POINTER application ist NULL oder ein ungültiger Zeiger.

Hinweise

Diese Methode muss von der Hostanwendung für jedes Fenster der obersten Ebene aufgerufen werden, das ein Menüband erfordert.

Diese Methode wird verwendet, um die Hooks einzurichten, die es dem Menübandframework ermöglichen, Rückrufe in der Hostanwendung aufzurufen.

Um das Menüband erfolgreich zu initialisieren, muss eine kompilierte Menübandmarkupdatei als Ressource verfügbar sein und in einem nachfolgenden Aufruf von IUIFramework::LoadUI angegeben werden. Diese Markupdatei ist eine integrale Komponente des Frameworks. Es gibt die zu verwendenden Steuerelemente und deren Layout an.

Wenn IUIFramework::Initialize erfolgreich zurückgibt:

  • Um Inkonsistenzen, Redundanz und Inkompatibilität zwischen Menüband- und herkömmlichen Befehlsmodellen zu vermeiden, entfernt das Menübandframework die Standardmenüleiste des Fensters der obersten Ebene in der Hostanwendung.
  • Das Framework entfernt Verweise auf den WS_EX_CLIENTEDGE-Stil.
    Hinweis Die WS_EX_CLIENTEDGE-Formatvorlage gibt an, dass ein Fenster einen Rahmen mit einem abgesenkten Rand aufweist. Dieser Stil beeinträchtigt visuell die Integration des Menübands und der Hostanwendung.
     
  • Das Framework erfordert, dass die WS_SYSMENU-Formatvorlage aktiviert ist. Wenn WS_SYSMENU nicht aktiviert ist, bietet das Framework keine alternative Funktionalität, und es kann zu einem unvorhersehbaren Rendering des Menübands führen.
    Hinweis Die WS_SYSMENU Stil gibt an, dass das Anwendungsfenster über ein Systemmenü auf der Titelleiste verfügt. Durch Zuordnung muss auch die WS_CAPTION-Formatvorlage angegeben werden (siehe ERROR_INVALID_WINDOW_HANDLE oben in Rückgabewerte ).
     

Beispiele

Im folgenden Beispiel wird eine grundlegende Frameworkinitialisierungsfunktion veranschaulicht.

//
//  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;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile uiribbon.h
DLL Mshtml.dll

Weitere Informationen

IUIFramework

IUIFramework::LoadUI

Markupelemente

Windows-Menübandframeworkbeispiele