다음을 통해 공유


내보낸된 DLL 기능 진입점

DLL의 내보낸된 함수를 사용 하는 AFX_MANAGE_STATE 매크로 호출 응용 프로그램의 DLL에는 DLL 모듈에서 전환할 때 올바른 전역 상태를 유지 합니다.

호출 되는 경우이 매크로가 설정 pModuleState에 대 한 포인터는 AFX_MODULE_STATE 함수를 포함 하는 범위와 나머지 부분에 대 한 유효한 모듈 상태로 모듈의 전역 데이터를 포함 하는 구조입니다.매크로 포함 하는 범위를 벗어나면 이전의 유효한 모듈 상태가 자동으로 복원 됩니다.

이 전환의 인스턴스를 구성 하 여 수행할 수 있습니다는 AFX_MODULE_STATE 스택에 클래스입니다.해당 생성자에서이 클래스는 현재 모듈 상태에 대 한 포인터를 가져옵니다. 멤버 변수에 저장 및 다음 설정 pModuleState 유효한 모듈 상태로 새.소멸자 인 경우,이 클래스에 해당 멤버 변수에 유효한 모듈 상태로 저장 된 포인터를 복원 합니다.

하나는 대화 상자에서 DLL 실행 같은 내보낸된 함수가 있으면 함수의 시작 부분에 다음 코드를 추가 해야 합니다.

AFX_MANAGE_STATE(AfxGetStaticModuleState( ))

이 반환 된 상태와 현재 모듈 상태를 맞바꿉니다 AfxGetStaticModuleState 현재 범위가 끝날 때까지.

리소스 Dll에서 문제가 발생 하는 경우는 AFX_MANAGE_STATE 매크로 사용 하지 않습니다.기본적으로 MFC 리소스 템플릿을 로드 하는 주 응용 프로그램의 리소스 핸들을 사용 합니다.이 서식 파일은 DLL에 실제로 저장 됩니다.MFC 모듈 상태 정보로 전환 없습니다 한다는 근본 원인 인지는 AFX_MANAGE_STATE 매크로.리소스 핸들은 MFC 모듈 상태에서 복구 됩니다.모듈 상태를 전환 데 잘못 된 리소스 핸들을 인해 발생 합니다.

AFX_MANAGE_STATE모든 DLL의에서 함수를 넣이 필요가 없습니다.예를 들어, InitInstance MFC 코드 없이 응용 프로그램에서 호출할 수 있습니다 AFX_MANAGE_STATE MFC 전에 모듈 상태를 자동으로 이동 하기 때문에 InitInstance 한 후 다시 다음 스위치 InitInstance 를 반환 합니다.모든 메시지 맵에서 처리기를 마찬가지입니다.기본 Dll 실제로 메시지를 라우팅하기 전에 모듈 상태를 자동으로 전환 하는 특수 한 마스터 창 프로시저를 했습니다.

참고 항목

개념

MFC 모듈의 상태 데이터 관리