MFC 모듈의 상태 데이터 관리

이 문서에서는 MFC 모듈의 상태 데이터와 실행 흐름(실행 시 경로 코드가 애플리케이션을 통과)이 모듈을 입력하고 떠날 때 이 상태가 업데이트되는 방법에 대해 설명합니다. AFX_MANAGE_STATE 및 METHOD_PROLOGUE 매크로를 사용하여 모듈 상태를 전환하는 방법도 설명합니다.

참고 항목

여기서 "모듈"이라는 용어는 실행 프로그램 또는 애플리케이션의 나머지 부분과 독립적으로 작동하지만 MFC DLL의 공유 복사본을 사용하는 DLL(또는 DLL 집합)을 가리킵니다. ActiveX 컨트롤은 모듈의 일반적인 예입니다.

다음 그림과 같이 MFC에는 애플리케이션에서 사용되는 각 모듈에 대한 상태 데이터가 있습니다. 이 데이터의 예로는 Windows 인스턴스 핸들(리소스 로드에 사용), 애플리케이션의 현재 CWinAppCWinThread 개체에 대한 포인터, OLE 모듈 참조 수 및 Windows 개체 핸들과 해당 MFC 개체 인스턴스 간의 연결을 기본 다양한 맵이 있습니다. 그러나 애플리케이션에서 여러 모듈을 사용하는 경우 각 모듈의 상태 데이터는 애플리케이션 전체가 아닙니다. 대신 각 모듈에는 MFC 상태 데이터의 자체 프라이빗 복사본이 있습니다.

Diagram showing the state data of a single module.
단일 모듈(애플리케이션)의 상태 데이터

모듈의 상태 데이터는 구조체에 포함되며 항상 해당 구조에 대한 포인터를 통해 사용할 수 있습니다. 다음 그림과 같이 실행 흐름이 특정 모듈에 들어가면 해당 모듈의 상태는 "현재" 또는 "유효" 상태여야 합니다. 따라서 각 스레드 개체에는 해당 애플리케이션의 유효 상태 구조에 대한 포인터가 있습니다. 이 포인터를 항상 업데이트하려면 애플리케이션의 전역 상태를 관리하고 각 모듈 상태의 무결성을 기본 유지하는 데 중요합니다. 전역 상태를 잘못 관리하면 예기치 않은 애플리케이션 동작이 발생할 수 있습니다.

State data of multiple modules.
여러 모듈의 상태 데이터

즉, 각 모듈은 모든 진입점에서 모듈 상태 간에 올바르게 전환해야 합니다. "진입점"은 실행 흐름이 모듈의 코드를 입력할 수 있는 모든 위치입니다. 진입점은 다음과 같습니다.

참고 항목

일반 MFC 항목