Поделиться через


Метод IUIFramework::Initialize (uiribbon.h)

Подключает ведущее приложение к платформе ленты Windows.

Синтаксис

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

Параметры

[in] frameWnd

Тип: HWND

Обратитесь к окну верхнего уровня, в котором будет содержаться лента.

[in] application

Тип: IUIApplication*

Указатель на реализацию IUIApplication ведущего приложения.

Возвращаемое значение

Тип: HRESULT

В случае успешного выполнения возвращает S_OK; В противном случае — значение ошибки из следующего списка.

Значение Описание
HRESULT_FROM_WIN32(ERROR_INVALID_WINDOW_HANDLE) frameWnd имеет значение NULL, не указывает на существующее окно или не является окном верхнего уровня рабочего стола.
Примечание Эта ошибка также возвращается, если frameWnd является дочерним окном (WS_CHILD), объявлен как окно инструментов (WS_EX_TOOLWINDOW) или в нем отсутствует свойство подпись (WS_CAPTION является обязательным).
 
HRESULT_FROM_WIN32(ERROR_WINDOW_OF_OTHER_THREAD) frameWnd не принадлежит потоку выполнения.
E_POINTER приложение имеет значение NULL или недопустимый указатель.

Комментарии

Этот метод должен вызываться ведущим приложением для каждого окна верхнего уровня, которому требуется лента.

Этот метод используется для настройки перехватчиков, которые позволяют платформе ленты вызывать обратные вызовы в ведущем приложении.

Для успешной инициализации ленты скомпилированный файл разметки ленты должен быть доступен в качестве ресурса и указан в последующем вызове IUIFramework::LoadUI. Этот файл разметки является неотъемлемой частью платформы; он указывает используемые элементы управления и их макет.

Если IUIFramework::Initialize возвращает успешно:

  • Чтобы устранить несогласованность, избыточность и несовместимость между лентой и традиционными моделями команд, платформа ленты удаляет стандартную строку меню окна верхнего уровня в ведущем приложении.
  • Платформа удаляет ссылки на стиль WS_EX_CLIENTEDGE.
    Примечание Стиль WS_EX_CLIENTEDGE указывает, что окно имеет границу с впалой границей. Этот стиль визуально влияет на интеграцию ленты и ведущего приложения.
     
  • Для платформы требуется включить стиль WS_SYSMENU. Если WS_SYSMENU не включен, платформа не предоставляет альтернативные функции и может привести к непредсказуемой отрисовке ленты.
    Примечание Стиль WS_SYSMENU указывает, что в окне приложения есть системное меню в строке заголовка. По ассоциации также необходимо указать стиль WS_CAPTION (см. ERROR_INVALID_WINDOW_HANDLE выше в разделе Возвращаемые значения ).
     

Примеры

В следующем примере демонстрируется базовая функция инициализации платформы.

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

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header uiribbon.h
DLL Mshtml.dll

См. также раздел

IUIFramework

IUIFramework::LoadUI

Элементы разметки

Примеры Windows Ribbon Framework