2011-07-06 4 views
3

MFC 응용 프로그램의 대화 상자에서 현재 작업 중입니다. MFC에 상당히 익숙합니다.MFC 대화 상자의 DestroyWindow() 호출 위치는 어디입니까?

CDialog에서 파생 된 클래스 B을 사용하는 A (CDialog에서 파생 됨) 클래스가 있다고 가정 해 보겠습니다. 따라서 A::OnInitDialog()create(...) 메서드가 B이라고합니다.

내가 클래스 B의 소멸자

if (GetSafeHwnd()) 
{ 
    DestroyWindow(); 
} 

이 될까요 포함 지금보고

? 내 이해에 BDestroyWindow() 메서드를 A::OnDestroy()에 전화하는 것이 더 낫습니다. 그게 맞습니까?

도움 주셔서 감사합니다.
Oliver

답변

3

당신이 MFC를 탐구 했으므로주의해야 할 점은 그것이 래퍼 API이며 엄격하게 객체 지향적이지 않다는 것입니다. 반면에 은 RAII (Resource Acquisition Is Initialisation)를 사용하는과 같지만 MFC는 해당 생성자에 창을 만들지 않습니다. 여러분이 정확히 지적한대로 Create() 메서드를 통해이 작업을 수행합니다.

A이 (A::OnDestroy) 파괴 될 때 B을 파괴하려면 MFC가 작동하는 방식을 고려할 때 나에게 더 의미가 있습니다. 그래서 나는 올바른 길로 가고 있다고 생각합니다.

관련 문제