Элементы управления ActiveX в MFC. Распространение элементов управления ActiveX
Этот раздел описывает несколько связанных проблем в распространении элементы управления ActiveX.
ANSI или юникода версии элемента управления
Чтобы задать элементы управления ActiveX и DLL распространяемого
Регистрация элементов управления
Примечание
Дополнительные сведения о распространении элементов управления ActiveX см. в разделе Распространение элементов управления.
ANSI или юникода версии элемента управления
Можно решить, нужно ли сделать версии ANSI или юникода элемента управления или оба. Это решение зависит от факторов ошибки, используемая в ANSI и символ юникода — наборов.
Управления ANSI, работающие на всех операционных систем Win32, позволяют для максимальной переноса между различными операционными системами Win32. Управления юникода работают только на Windows NT (версии 3.51 или более поздней версии), но не в Windows 95 или Windows 98. Если переносимость является основным обеспечение, грузите управления ANSI. Если элементы управления выполняться только на Windows NT, можно грузите управления юникода. Вы можете выбрать предоставить оба и иметь приложение установить версию наиболее подходящую для операционной системы пользователя.
Чтобы задать элементы управления ActiveX и DLL распространяемого
Программа установки предоставляется вместе с элементами управления ActiveX должна создать специальный подкаталог каталога Windows и поместить файлы .OCX элементов управления в ней.
Примечание
Используйте Windows API GetWindowsDirectory в программе установки для получения имени каталога Windows.Может потребоваться создать имя вложенной папки из имени, компании или продукта.
Программа установки должна иметь необходимые распространяемые файлы DLL в системном каталоге Windows. Если какие-либо DLL уже имеются на компьютере пользователя, программа установки должна сравнить их версии с версиями выполняется настройка. Переустановите файл, только если номер версии выше уже установлен файл.
Поскольку элементы управления ActiveX может использоваться только в приложениях OLE-контейнер, нет никакой необходимости распределенного полный набор OLE DLL вместе с элементами управления. Можно высказывать, приложение (или операционная система сама) имеет стандартные OLE библиотеки DLL, но.
Регистрация элементов управления
Перед элементом управления можно использовать соответствующие записи, необходимо создать для него в базе данных регистрации Windows. Некоторые контейнеры элементов управления ActiveX предоставляют пункт меню для пользователей для регистрации новых элементов управления, однако эта функция не может быть доступна во всех контейнерах. Поэтому может потребоваться программу установки регистрации элемента управления, если они заданы.
При необходимости можно написать программу установки, чтобы зарегистрировать элемент управления непосредственно вместо.
Использовать API Windows LoadLibrary для загрузки библиотеки 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.Это гарантирует, что системные библиотеки DLL OLE в правильном состоянии регистрации элемента управления ActiveX.
Необходимо зарегистрировать MFCx0.dll.