MFC 컨트롤을 ActiveX: ActiveX 컨트롤 배포
ActiveX 컨트롤의 재배포와 관련 된 몇 가지 문제에 설명 합니다.
ANSI 또는 유니코드 컨트롤 버전
ActiveX 컨트롤 및 재배포 가능한 Dll 설치
컨트롤 등록
[!참고]
ActiveX 컨트롤 재배포에 대 한 자세한 내용은 참조 하십시오. 컨트롤 재배포.
ANSI 또는 유니코드 컨트롤 버전
ANSI 또는 유니코드 버전 컨트롤 또는 두 가지 모두를 제공할 것인지 여부를 결정 해야 합니다.이 결정이 ANSI 및 유니코드 문자 집합 고유의 이식성 요인에 따라 결정 됩니다.
모든 Win32 운영 체제에서 작동 하는 ANSI 컨트롤을 다양 한 Win32 운영 체제 간의 이식성을 최대 허용 합니다.유니코드 컨트롤 Windows NT (버전 3.51 이상)만에 없지만 Windows 95 또는 Windows 98에서 작동 합니다.이식성에 대 한 주요 관심사, ANSI 컨트롤을 제공 이면.컨트롤을 Windows NT만 실행 되는 경우 유니코드 컨트롤을 제공할 수 있습니다.모두 제공 하 고 응용 프로그램 사용자의 운영 체제에 대 한 가장 적절 한 버전을 설치할 수도 있습니다.
ActiveX 컨트롤 및 재배포 가능한 Dll 설치
설치 프로그램을 ActiveX 컨트롤을 제공 해야 특수 Windows 디렉터리의 하위 디렉터리를 만듭니다 및 컨트롤 설치 '.OCX 파일을 사용 합니다.
[!참고]
Windows를 사용 하 여 GetWindowsDirectory API 설치 프로그램에는 Windows 디렉터리의 이름을 알아낼 수 있습니다.하위 디렉터리 이름에서 회사나 제품의 이름을 파생 할 수 있습니다.
설치 프로그램이 필요한 재배포 가능 DLL 파일은 Windows 시스템 디렉터리에 설치 해야 합니다.Dll을 이미 사용자의 컴퓨터에 있는 경우 설치 프로그램이 해당 버전을 설치 하 고 최신 버전을 비교 해야 합니다.해당 버전 번호가 이미 설치 된 파일 보다 더 높은 경우에 파일을 다시 설치 합니다.
ActiveX 컨트롤을 OLE 컨테이너 응용 프로그램에만 사용할 수 없으므로 OLE Dll의 전체 집합을 컨트롤과 함께 배포할 필요가 없습니다.포함 된 응용 프로그램 (또는 운영 체제)를 표준 OLE Dll이 설치 되어 있는지를 가정할 수 있습니다.
컨트롤 등록
컨트롤을 사용 하려면 적절 한 항목에 대 한 Windows 등록 데이터베이스에 만들어야 합니다.일부 ActiveX 컨트롤 컨테이너에 새 컨트롤을 등록할 수 있는 사용자에 대 한 메뉴 항목 제공 하지만이 기능을 모든 컨테이너에서 사용할 수 없습니다.따라서 설치 된 경우 해당 컨트롤을 등록 하려면 설치 프로그램을 할 수 있습니다.
원하는 경우 대신 해당 컨트롤을 직접 등록 하 여 설치 프로그램을 작성할 수 있습니다.
사용은 LoadLibrary Windows API 컨트롤 DLL을 로드 합니다.그런 다음 사용 GetProcAddress "메시지가" 함수의 주소를 얻을 수 있습니다.마지막으로 호출 하는 DllRegisterServer 함수.다음 코드 샘플에서는 한 가지 방법을 보여 위치 hLib 컨트롤 라이브러리에 대 한 핸들을 저장 및 lpDllEntryPoint "메시지가" 함수의 주소를 저장 합니다.
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을 등록 해야 합니다.