Шаг 375 - Регистрация OCX программой

Вопроса ошибок и их обхода мы уже касались в "Шаг 369 - Ошибки связанные с использование OCX". Это не я придумал - просто ежли приходится юзать осиксы то лучше их регистрить самой программой.

BOOL CFooApp::RegisterOCX(CString strName)
{
	HMODULE hModule = LoadLibrary((LPCTSTR)strName);
	CString strError;
 
	if (hModule == NULL)
	{
		strError = "LoadLibrary " + strName + " failed!";
		AfxMessageBox(strError);
		return FALSE;
	}
 
	FARPROC fp = GetProcAddress(hModule, "DllRegisterServer");
	if (fp == NULL)
	{
		strError = "Exported function DllRegisterServer not found!";
		AfxMessageBox(strError);
		return FALSE;
	}
 
	CoInitialize(NULL);
	HRESULT hRes = fp();
	if (SUCCEEDED(hRes))
	{
		return TRUE;
	}
 
	CoUninitialize();
	return FALSE;
}

А в CFooApp::InitInstance() вставляем кусок кода:

if(!RegisterOCX("cfx32.ocx"))
{
	AfxMessageBox("Какие то враги стерли cfx32.ocx");
	return FALSE;  // Опаньки, вообше не запускаемся пока кто-нибудь найдет нужные файлы
}

Шаг прислал Bulat.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.