次の方法で共有


IUIApplication::OnViewChanged メソッド (uiribbon.h)

ビューの状態が変更されたときに呼び出されます。

構文

HRESULT OnViewChanged(
  [in] UINT32      viewId,
  [in] UI_VIEWTYPE typeID,
  [in] IUnknown    *view,
  [in] UI_VIEWVERB verb,
  [in] INT32       uReasonCode
);

パラメーター

[in] viewId

型: UINT32

ビューの ID。 0 の値のみが有効です。

[in] typeID

種類: UI_VIEWTYPE

アプリケーションによってホストされる UI_VIEWTYPE

[in] view

種類: IUnknown*

View インターフェイスへのポインター。

[in] verb

種類: UI_VIEWVERB

ビューによって実行される UI_VIEWVERB (またはアクション)。

[in] uReasonCode

型: INT32

未定義。

戻り値

型: HRESULT

このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。

解説

このコールバック通知は、ビュー状態の変更ごとにフレームワークによってホスト アプリケーションに送信されます。

大事なこのコールバックは、viewId が 0 のリボン ビューに対してのみ発生します。
 
IUIApplication::OnViewChanged は、ホスト アプリケーションの起動時にリボン プロパティを初期化したり、アプリケーション ウィンドウのサイズ変更などのユーザー アクションに基づいてリボン プロパティを変更したり、アプリケーションが閉じるときにリボン プロパティに対してクエリを実行したりする場合に便利です。

次の例では、 IUIApplication::OnViewChanged メソッドの基本的な実装を示します。

//
//  FUNCTION: OnViewChanged(UINT, UI_VIEWTYPE, IUnknown*, UI_VIEWVERB, INT)
//
//  PURPOSE: Called when the state of a View (Ribbon is a view) changes - like created/destroyed/resized.
//
//  PARAMETERS:    
//                viewId - The View identifier. 
//                typeID - The View type. 
//                pView - Pointer to the View interface. 
//                verb - The action performed by the View. 
//                uReasonCode - Not defined. 
//
//  COMMENTS:
//
//    For this sample, return the same command handler for all commands
//    specified in the .xml file.
//    
//
STDMETHODIMP CApplication::OnViewChanged(
    UINT viewId,
    UI_VIEWTYPE typeId,
    IUnknown* pView,
    UI_VIEWVERB verb,
    INT uReasonCode)
{
    HRESULT hr = E_NOTIMPL;
    
    // Checks to see if the view that was changed was a Ribbon view.
    if (UI_VIEWTYPE_RIBBON == typeId)
    {
        switch (verb)
        {            
            // The view was newly created.
            case UI_VIEWVERB_CREATE:
                _cwprintf(L"IUIApplication::OnViewChanged called with verb=CREATE\r\n");

                if (NULL == g_pRibbon)
                {
                    // Retrieve and store the IUIRibbon
                    hr = pView->QueryInterface(&g_pRibbon);
                }
                break;

            // The view was resized.  
            // In the case of the Ribbon view, the application should call 
            // GetHeight() to determine the height of the Ribbon.
            case UI_VIEWVERB_SIZE:
                _cwprintf(L"IUIApplication::OnViewChanged called with verb=SIZE\r\n");
                // Call to the framework to determine the height of the Ribbon.
                if (NULL != g_pRibbon)
                {
                    UINT uRibbonHeight;
                    hr = g_pRibbon->GetHeight(&uRibbonHeight);
                }
                if (!SUCCEEDED(hr))
                {
                    //_cwprintf(L"IUIRibbon::GetHeight() failed with hr=0x%X\r\n", hr);
                }
                break;
                
            // The view was destroyed.
            case UI_VIEWVERB_DESTROY:
                //_cwprintf(L"IUIApplication::OnViewChanged called with verb=DESTROY\r\n");
                g_pRibbon = NULL;
                hr = S_OK;
                break;
        }
    }
    return hr;
}

要件

   
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー uiribbon.h
[DLL] Mshtml.dll

関連項目

IUIApplication

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