은 리소스 기능을 호출하는 매크로이므로 특정 DLL이 아니라이 DLL에서만 조회되며 특정 함수가 호출되는 DLL은 제외됩니다. 이 매크로는 또한 AFX_MAINTAIN_STATE
클래스를 스택에 넣습니다. 이 클래스는 함수가 끝나면 리소스 조회를 다시 설정하므로이 내 보낸 함수를 호출 한 EXE/DLL에서 리소스 검색을 다시 가져옵니다. C++ 측면에서
:이 매크로의
int GetSomething()
{
SetResourceSearchingToThisDLL();
AFX_MAINTAIN_STATE state_RAII;
//Use resource
// Compiler will put destroctor call for state_RAII object here
// which will mean AFX_MAINTAIN_STATE::~AFX_MAINTAIN_STATE()
// And that would call something like:
ResetResourceSearching();
}
사용, 같은 DLL 호출 스택 내에서 늘 사람이 상처 자원 검색 중 가입일 :
// Some exported function that launches GUI or uses other resources
int GetSomething()
{
AFX_MANAGE_STATE();
...
}
같은 것을 (정확히)시겠습니까에는 사용 카운터가있어 0에 도달 한 경우에만 호출자 (DLL/EXE 리소스)로 되돌려집니다.
모든 MFC DLL은이 매크로를 사용해야합니다. DLL이 비 MFC 클라이언트에 의해로드 된 경우, C 클라이언트, C++ 콘솔 기반 응용 프로그램, .NET 클라이언트 등일 수 있습니다 (예, MFC Windows 응용 프로그램 클라이언트 일 수도 있음).
EXE와 DLL이 동일한 MFC/컴파일러/링커 버전을 사용하는 MFC로 만들어지고 하나의 CWinApp
개체를 가지고 있다면이 매크로를 사용할 필요가 없습니다.
MFC 모듈 상태 구현 Microsoft 기술 자료 058에는 AFX_MANAGE_STATE 사용에 대한 몇 가지 추가 정보가 있습니다. https://msdn.microsoft.com/en-us/library/vstudio/ft1t4bbc(v=vs.100).aspx 약간 날짜가있을 수 있지만. –