Поделиться через


Функция 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_STANDARDMIN для OLEUI_ERR_STANDARDMAX. Это значение позволяет приложению проверять наличие стандартных сообщений, чтобы отображать сообщения об ошибках для пользователя.
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_STANDARDMIN для OLEUI_ERR_STANDARDMAX. Это значение позволяет приложению проверять наличие стандартных сообщений, чтобы отображать сообщения об ошибках для пользователя.
OLEUI_IOERR_LPSZFILEINVALID
Недопустимое значение lpszFile или у пользователя недостаточно разрешений на запись. Этот элемент lpszFile указывает на имя файла, связанного или вставленного.
OLEUI_IOERR_PPVOBJINVALID
Недопустимое значение ppvOjb . Этот элемент указывает на расположение, в котором возвращается указатель для объекта .
OLEUI_IOERR_LPIOLECLIENTSITEINVALID
Недопустимое значение lpIOleClientSite . Этот член указывает на клиентский сайт для объекта .
OLEUI_IOERR_LPISTORAGEINVALID
Недопустимое значение lpIStorage . Этот элемент указывает на хранилище, используемое для объекта .
OLEUI_IOERR_SCODEHASERROR
Член sclpIO содержит дополнительные сведения об ошибке.
OLEUI_IOERR_LPCLSIDEXCLUDEINVALID
Недопустимое значение lpClsidExclude . Этот элемент содержит список исключаемых идентификаторов CLSID.
OLEUI_IOERR_CCHFILEINVALID
Недопустимое значение cchFile или lpszFile . Элемент cchFile указывает размер буфера lpszFile . Элемент lpszFile указывает на имя файла, связанного или вставленного.

Комментарии

OleUIInsertObject позволяет пользователю выбрать тип объекта для вставки из списка, содержащего объектные приложения, зарегистрированные в системе пользователя. Чтобы заполнить этот список, OleUIInsertObject проходит по реестру, добавляя каждый сервер объектов, который он находит, что соответствует следующим критериям:

  • Запись реестра не содержит раздел NotInsertable.
  • Запись реестра содержит ключ Протокола\\StdFileEditing\\Server в стиле OLE 1.0.
  • Запись реестра содержит раздел Insertable.
  • ИДЕНТИФИКАТОР CLSID объекта не включен в список исключаемых объектов (элемент lpClsidExcludeобъекта OLEUIINSERTOBJECT).
По умолчанию OleUIInsertObject не проверяет серверы объектов, однако, если флаг IOF_VERIFYSERVEREXIST включен в элемент dwFlags структуры OLEUIINSERTOBJECT , 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 как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header oledlg.h
Библиотека OleDlg.lib
DLL OleDlg.dll

См. также раздел

OLEUIINSERTOBJECT

OpenFile