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 |
标头 | uiribbon.h |
DLL | Mshtml.dll |