共用方式為


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
lpIOsc 成員有額外的錯誤資訊。
OLEUI_IOERR_LPCLSIDEXCLUDEINVALID
lpClsidExclude 值無效。 此成員包含要排除的CLSID清單。
OLEUI_IOERR_CCHFILEINVALID
cchFilelpszFile 值無效。 cchFile 成員會指定 lpszFile 緩衝區的大小。 lpszFile 成員指向連結或插入的檔名。

言論

OleUIInsertObject 可讓使用者從清單框中選取要插入的物件類型,其中包含用戶系統上註冊的物件應用程式。 若要填入該清單框,OleUIInsertObject 周遊登錄,並新增它找到的每個符合下列準則的物件伺服器:

  • 登錄專案不包含 NotInsertable 機碼。
  • 登錄專案包含 OLE 1.0 樣式 Protocol\\StdFileEditing\\Server 機碼。
  • 登錄專案包含可插入的機碼。
  • 物件的 CLSID 不包含在要排除的物件清單中(lpClsidExcludeOLEUIINSERTOBJECT的成員)。
根據預設,OleUIInsertObject 不會驗證物件伺服器,不過,如果IOF_VERIFYSERVEREXIST旗標包含在 OLEUIINSERTOBJECT 結構中的 dwFlags 成員中,OleUIInsertObject 確認伺服器是否存在。 如果不存在,則伺服器的物件不會新增至可用物件清單。 伺服器驗證是一項時間範圍廣泛的作業,而且是顯著的效能因素。

若要釋放從 Insert Object[貼上特殊] 對話框傳回的 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 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 oledlg.h
連結庫 OleDlg.lib
DLL OleDlg.dll

另請參閱

OLEUIINSERTOBJECT

OpenFile