OleUIInsertObjectA 函式 (oledlg.h)

叫用標準 [插入物件] 對話框,讓用戶選取物件來源和類別名稱,以及將對象顯示為本身或圖示的選項。

語法

UINT OleUIInsertObjectA(
  [in] LPOLEUIINSERTOBJECTA unnamedParam1
);

參數

[in] unnamedParam1

此對話框內含 OLEUIINSERTOBJECT 結構的指標。

傳回值

標準成功/錯誤定義

傳回碼 Description
OLEUI_FALSE
未知的失敗 (未使用) 。
OLEUI_OK
使用者按下 [確定] 按鈕。
OLEUI_SUCCESS
沒有錯誤,與OLEUI_OK相同。
OLEUI_CANCEL
使用者按下 [取消] 按鈕。
 

標準欄位驗證錯誤

傳回碼 Description
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 值無效。
 

初始化錯誤

傳回碼 Description
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 配置器的呼叫失敗。
 

函式特定錯誤

傳回碼 Description
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 標頭會根據 UNICODE 預處理器常數的定義,將 OLEUIINSERTOBJECT 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 oledlg.h
程式庫 OleDlg.lib
Dll OleDlg.dll

另請參閱

OLEUIINSERTOBJECT

OpenFile