문제

내 cformView- 파생 클래스는 다음과 같이 구성됩니다.

class FormViewClass : public CFormView
{
        ...
        FormViewClass();
        void Initialize();
        virtual void OnInitialUpdate();
        ...
};

이상적으로는 생성자 본문에서 다음과 같이 초기화 () 함수를 호출하고 싶습니다.

FormViewClass::FormViewClass()
{
        ...
        // originally I want to call Initialize function here
        Initialize();
        ...
}

그러나이 기능이 생성 될 때이 클래스의 모든 초기화를 책임지고 싶고 Combobox, 편집 제어, 확인란 제어, 라디오 버튼 제어 등과 같은 MFC 객체 초기화가 포함되어 있기 때문에 대신 전화해야합니다. 내가 생각한대로 여기에서 () 기능을 초기화합니다.

void FormViewClass::OnInitialUpdate()
{
    // Should I call Initialize function instead here?
    Initialize();
}

현재 생성자 (따라서 생성자에서 iniitalize () 도우미 함수를 호출) 및 oniniitalupdate () 핸들러 기능에서 MFC 객체 iniitalization에 비 MFC 메모리 및 객체 초기화가 있습니다. 코드를 올바르게 리팩터링 할 수 있도록 그것에 대한 당신의 생각을 듣는 것이 좋을 것입니다. 미리 감사드립니다.

도움이 되었습니까?

해결책

나는 당신이 당신이하는 방식으로 그것을하는 것이 옳다고 생각합니다.

일반적으로, 나는 가능한 빨리 일을 초기화하려고 노력할 것입니다 (그러나 이전 8-). OnInitialUpdate 말이된다.

(만약에 OnInitDialog 존재했습니다 CFormView, 아마도 그것은 아마도 더 나은 곳이 될 것입니다 OnInitialUpdate, 하지만 나는 그것이 그렇게 생각하지 않습니다.)

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