IUIFramework::Initialize-Methode (uiribbon.h)
Stellt die Hostanwendung mit dem Windows-Menübandframework in Verbindung.
Syntax
HRESULT Initialize(
[in] HWND frameWnd,
[in] IUIApplication *application
);
Parameter
[in] frameWnd
Typ: HWND
Behandeln Sie das Fenster der obersten Ebene, das das Menüband enthält.
[in] application
Typ: IUIApplication*
Zeiger auf die IUIApplication-Implementierung der Hostanwendung.
Rückgabewert
Typ: HRESULT
Gibt S_OK zurück, wenn dies erfolgreich ist; andernfalls ein Fehlerwert aus der folgenden Liste.
Wert | BESCHREIBUNG |
---|---|
HRESULT_FROM_WIN32(ERROR_INVALID_WINDOW_HANDLE) | frameWnd ist NULL, verweist nicht auf ein vorhandenes Fenster oder ist kein Fenster auf oberster Ebene des Desktops.
Hinweis Dieser Fehler wird auch zurückgegeben, wenn frameWnd ein untergeordnetes Fenster (WS_CHILD) ist, als Toolfenster (WS_EX_TOOLWINDOW) deklariert wird, oder es fehlt eine Beschriftungseigenschaft (WS_CAPTION ist obligatorisch).
|
HRESULT_FROM_WIN32(ERROR_WINDOW_OF_OTHER_THREAD) | frameWnd gehört nicht zum Ausführungsthread. |
E_POINTER | anwendung ist NULL oder ein ungültiger Zeiger. |
Bemerkungen
Diese Methode muss von der Hostanwendung für jedes Fenster auf oberster Ebene aufgerufen werden, das ein Menüband erfordert.
Diese Methode wird verwendet, um die Hooks einzurichten, die das Menübandframework zum Aufrufen von Rückrufen in der Hostanwendung ermöglichen.
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 Die Inkonsistenz, Redundanz und Unkompatibilität zwischen Menüband- und herkömmlichen Befehlsmodellen zu beseitigen, entfernt das Menübandframework die Standardmenüleiste des Fensters der obersten Ebene in der Hostanwendung.
- Das Framework entfernt Verweise auf die WS_EX_CLIENTEDGE-Formatvorlage. Hinweis Die WS_EX_CLIENTEDGE-Formatvorlage gibt an, dass ein Fenster einen Rahmen mit einem eingedränkten Rand aufweist. Diese Formatvorlage 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 alternativen Funktionen und unvorhersehbare Renderings des Menübands.Hinweis Die WS_SYSMENU Formatvorlage 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ückgabewerten ).
Beispiele
Im folgenden Beispiel wird eine grundlegende Framework-Initialisierungsfunktion 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
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 |