IUIFramework::Initialize 方法 (uiribbon.h)
將主應用程式連線到 Windows 功能區架構。
語法
HRESULT Initialize(
[in] HWND frameWnd,
[in] IUIApplication *application
);
參數
[in] frameWnd
類型: HWND
將包含功能區的最上層視窗句柄。
[in] application
類型: IUIApplication*
主應用程式的 IUIApplication 實作指標。
傳回值
類型: HRESULT
如果成功,則傳回S_OK;否則,下列清單中的錯誤值。
值 | Description |
---|---|
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 |
標頭 | uiribbon.h |
Dll | Mshtml.dll |