개인 MFC 란 무엇이며 일반 인터페이스를 통해 액세스 할 수없는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2044999

  •  20-09-2019
  •  | 
  •  

문제

GUI 개발에 MFC를 사용하고 있으며 내가하려는 일에 유용 할 수있는 함수를 우연히 발견했습니다. 함수는 _afxcompareClassName입니다. 그러나 디렉토리 "vc/altmfc/에 위치한"afximpl.h "파일에 포함되어 있습니다.SRC/MFC/afximpl.h ". 정상적인 MFC 포함은 디렉토리"VC/Atlmfc/에 있습니다.포함".

이제 SRC/MFC에 위치한 파일과 기능을 수집 한 것에서 개인 MFC로 간주됩니다.이 사람에 따르면) 그리고 나는 그것들을 사용해서는 안됩니다. 왜요 ? 이 기능은 멋져 보입니다. UI의 현재 위치를 아는 데 도움이 될 것입니다.

궁극적으로 내가하고 싶었던 것은 텍스트 필드 (컨트롤 편집)를 편집 할 때 탈출/반환 키 동작을 변경하는 것이 었습니다. 내 질문은 다음과 같습니다.

  • 개인 MFC 기능이란 무엇입니까?
  • 왜 그 기능을 사용해서는 안됩니다 (내가 수집 한 것에서 자주 변화하는 것은 자주 바뀌므로 사용해서는 안된 이유입니다. 또 다른 이유가 있습니까?)
  • 내가 원하는 일을 할 수있는 더 깨끗한 방법이 있습니까?

나는 지금까지 아무것도없는 것 같기 때문에 개인 MFC에 대한 정보를 얻는 것이 좋을 것입니다.

감사합니다, JC

도움이 되었습니까?

해결책

'개인'MFC 파일은 MFC의 구현 세부 사항입니다. 클래스 사용자가 비공개 : 데이터 또는 방법을 원하지 않는 것처럼 MFC 구현 수준 유틸리티 코드에 의존해서는 안됩니다. MFC 구현 세부 정보에서 찾을 수있는 거의 모든 멋진 사항은 어딘가에 공개적으로 제공됩니다. 당신은 그냥 파야합니다.

MFC에는 원하는 기능을 수행하는 기능이 내장되어 있습니다. 라고 불린다 runtime_class, 그리고 다음은 MSDN의 샘플 코드입니다.

// Example for RUNTIME_CLASS
CRuntimeClass* prt = RUNTIME_CLASS( CAge );
ASSERT( lstrcmp( prt->m_lpszClassName, "CAge" )  == 0 );

다른 팁

외부 포함 폴더가 아닌 소스 트리에 위치한 "개인"입니다.

MFC의 구현 내부에 있기 때문에 이러한 파일에 정의 된 기능을 사용해서는 안되며 잘 변경 될 수 있습니다.

실제로 기능이 필요한 경우 코드를 복사하여 (적절한 속성 포함) 클래스 중 하나에 넣을 수 있지만 이상적이지 않습니다. 기능의 이름도 바꿀 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top