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。