OleUIInsertObjectW 函数 (oledlg.h)

调用标准“ 插入对象 ”对话框,该对话框允许用户选择对象源和类名,以及将对象显示为自身或图标的选项。

语法

UINT OleUIInsertObjectW(
  [in] LPOLEUIINSERTOBJECTW unnamedParam1
);

参数

[in] unnamedParam1

指向此对话框的输出 OLEUIINSERTOBJECT 结构的指针。

返回值

标准成功/错误定义

返回代码 说明
OLEUI_FALSE
未知故障 (未使用的) 。
OLEUI_OK
用户按下了“确定”按钮。
OLEUI_SUCCESS
无错误,与 OLEUI_OK 相同。
OLEUI_CANCEL
用户按下了“取消”按钮。
 

标准字段验证错误

返回代码 说明
OLEUI_ERR_STANDARDMIN
所有对话框常见的错误都位于OLEUI_ERR_STANDARDMAX OLEUI_ERR_STANDARDMIN范围内。 此值允许应用程序测试标准消息,以便向用户显示错误消息。
OLEUI_ERR_STRUCTURENULL
指向传递到函数的 OLEUIXXX 结构的指针为 NULL
OLEUI_ERR_STRUCTUREINVALID
对 OLEUIXXX 结构的读取或写入访问权限不足。
OLEUI_ERR_CBSTRUCTINCORRECT
cbstruct 值不正确。
OLEUI_ERR_HWNDOWNERINVALID
hWndOwner 值无效。
OLEUI_ERR_LPSZCAPTIONINVALID
lpszCaption 值无效。
OLEUI_ERR_LPFNHOOKINVALID
lpfnHook 值无效。
OLEUI_ERR_HINSTANCEINVALID
hInstance 值无效。
OLEUI_ERR_LPSZTEMPLATEINVALID
lpszTemplate 值无效。
OLEUI_ERR_HRESOURCEINVALID
hResource 值无效。
 

初始化错误

返回代码 说明
OLEUI_ERR_FINDTEMPLATEFAILURE
找不到对话框模板。
OLEUI_ERR_LOADTEMPLATEFAILURE
无法加载对话框模板。
OLEUI_ERR_DIALOGFAILURE
对话框初始化失败。
OLEUI_ERR_LOCALMEMALLOC
LocalAlloc 或标准 IMalloc 分配器的调用失败。
OLEUI_ERR_GLOBALMEMALLOC
GlobalAlloc 或标准 IMalloc 分配器的调用失败。
OLEUI_ERR_LOADSTRING
无法从库中为本地化资源调用 LoadString。
OLEUI_ERR_OLEMEMALLOC
对标准 IMalloc 分配器的调用失败。
 

函数特定错误

返回代码 说明
OLEUI_ERR_STANDARDMAX
所有对话框常见的错误都位于OLEUI_ERR_STANDARDMAX OLEUI_ERR_STANDARDMIN范围内。 此值允许应用程序测试标准消息,以便向用户显示错误消息。
OLEUI_IOERR_LPSZFILEINVALID
lpszFile 值无效或用户没有足够的写入访问权限。此 lpszFile 成员指向链接或插入的文件的名称。
OLEUI_IOERR_PPVOBJINVALID
ppvOjb 值无效。 此成员指向返回对象的指针的位置。
OLEUI_IOERR_LPIOLECLIENTSITEINVALID
lpIOleClientSite 值无效。 此成员指向 对象的客户端站点。
OLEUI_IOERR_LPISTORAGEINVALID
lpIStorage 值无效。 此成员指向要用于对象的存储。
OLEUI_IOERR_SCODEHASERROR
lpIOsc 成员具有其他错误信息。
OLEUI_IOERR_LPCLSIDEXCLUDEINVALID
lpClsidExclude 值无效。 此成员包含要排除的 CLSID 列表。
OLEUI_IOERR_CCHFILEINVALID
cchFilelpszFile 值无效。 cchFile 成员指定 lpszFile 缓冲区的大小。 lpszFile 成员指向链接到或插入的文件的名称。

注解

OleUIInsertObject 允许用户从包含用户系统上注册的对象应用程序的列表框中选择要插入的对象类型。 为了填充该列表框, OleUIInsertObject 会遍历注册表,添加它找到的每个满足以下条件的对象服务器:

  • 注册表项不包括 NotInsertable 项。
  • 注册表项包括 OLE 1.0 样式协议\\StdFileEditing\\Server 密钥。
  • 注册表项包括可插入项。
  • 对象的 CLSID 未包含在要排除 (OLEUIINSERTOBJECT) 的 lpClsidExclude 成员的对象列表中。
默认情况下, OleUIInsertObject 不验证对象服务器,但是,如果IOF_VERIFYSERVEREXIST标志包含在 OLEUIINSERTOBJECT 结构的 dwFlags 成员中, OleUIInsertObject 将验证服务器是否存在。 如果不存在,则不会将服务器的 对象添加到可用对象列表中。 服务器验证是一项耗时长的操作,是一个重要的性能因素。

若要释放从“插入对象”或“选择性粘贴”对话框返回的 HMETAFILEPICT,请删除句柄上附加的图元文件,如下所示:

void FreeHmetafilepict(HMETAFILEPICT hmfp)
{
    if (hmfp != NULL)
    {
        LPMETAFILEPICT pmfp = GlobalLock(hmfp);

        DeleteMetaFile(pmfp->hMF);
        GlobalUnlock(hmfp);
        GlobalFree(hmfp);
    }
    else
    {
        // Handle null pointers here.
        exit(0);
    }
} 

注意

oledlg.h 标头将 OLEUIINSERTOBJECT 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 oledlg.h
Library OleDlg.lib
DLL OleDlg.dll

另请参阅

OLEUIINSERTOBJECT

OpenFile