次の方法で共有


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) frameWndNULL であるか、既存のウィンドウを指していないか、デスクトップの最上位ウィンドウではありません。
メモこのエラーは、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
ヘッダー uiribbon.h
[DLL] Mshtml.dll

こちらもご覧ください

IUIFramework

IUIFramework::LoadUI

Markup 要素

Windows リボン フレームワークのサンプル