共用方式為


MFC ActiveX 控制項: 散發 ActiveX 控制項

本文將告訴您轉散發 ActiveX 控制項的相關的幾個問題:

  • ANSI 或 Unicode 控制版本

  • 安裝 ActiveX 控制項和可轉散發 Dll

  • 編譯控制項

    注意事項注意事項

    如需有關如何轉散發 ActiveX 控制項的詳細資訊,請參閱轉散發控制項

ANSI 或 Unicode 控制版本

您必須決定是否要出貨了 ANSI 或 Unicode 版本控制,或兩者。 這項決策是以 ANSI 和 Unicode 字元集中固有的可攜性因素為基礎。

ANSI 控制項,可處理所有的 Win32 平台時,允許各種 Win32 作業系統之間的最大可攜性。 Unicode 控制項運作上只有 Windows NT (3.51 或更高版本),而不是在 Windows 95 或 Windows 98。 如果可攜性是主要考量,散佈 ANSI 控制項。 如果您的控制項將只會在 Windows NT 上執行,您可出貨 Unicode 控制項。 您也可以選擇交付兩者,而且已安裝最適合使用者的作業系統版本的應用程式。

安裝 ActiveX 控制項和可轉散發 Dll

您用 ActiveX 控制項所提供的安裝程式應該建立 Windows 目錄的特定子目錄,並安裝的控制項。OCX 檔案。

注意事項注意事項

使用 Windows GetWindowsDirectory API 中您的安裝程式以取得 Windows 目錄的名稱。若要從您的公司或產品的名稱衍生子目錄名稱。

安裝程式必須安裝必要的可轉散發 DLL 檔案,Windows 系統目錄中。 如果有的任何 Dll 已經存在於使用者機器上,安裝程式應該比較您所安裝的版本。 檔案時才重新安裝它的版本號碼高於已經安裝的檔案。

因為只有在 OLE 容器應用程式可以使用 ActiveX 控制項,但沒有必要散佈整組的 OLE Dll 與您的控制項。 您可以假設包含的應用程式 (或作業系統本身) 具有標準的 OLE Dll 安裝。

編譯控制項

可以使用控制項之前,必須建立適當的項目為它在 Windows 註冊資料庫中。 有些 ActiveX 控制項容器可以提供使用者註冊新的控制項,功能表項目,但這項功能可能無法在所有容器中使用。 因此,您可以安裝程式在安裝時登錄該控制項。

如果您想要的話,您可以撰寫安裝程式,而是直接登錄控制項。

使用 LoadLibrary Windows API 來控制 DLL 的載入。 接下來,使用 GetProcAddress 以取得"DllRegisterServer"函式的位址。 最後,會呼叫DllRegisterServer函式。 下列程式碼範例會示範一個可行的方法,其中hLib會儲存控制項程式庫的控制代碼和lpDllEntryPoint 會將儲存的"DllRegisterServer"函式的位址。

HINSTANCE hLib = LoadLibrary(pszDllName);

if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
   AfxMessageBox(IDS_LOADLIBFAILED); //unable to load DLL
   iReturn = FAIL_LOAD;              //unable to load DLL
}

// Find the entry point.
lpDllEntryPoint = GetProcAddress(hLib, "DllRegisterServer");
if (lpDllEntryPoint != NULL)
   (*lpDllEntryPoint)();
else
   ;// Unable to locate entry point

直接登錄控制項的優點是您不需要叫用和載入不同的處理序 (即 REGSVR32),進而縮短安裝時間。 此外,由於登錄是一項內部程序,安裝程式可以處理錯誤和預料之外情況優於外部處理序可以。

注意事項注意事項

安裝程式會安裝 ActiveX 控制項之前,應該呼叫 OleInitialize。安裝程式完成時,呼叫 OleUnitialize。這可確保 OLE 系統 Dll 中註冊 ActiveX 控制項的適當狀態。

您必須在登錄 MFCx0.DLL。

請參閱

概念

MFC ActiveX 控制項