앞에서 설명한 CResizeDlg 클래스 멤버 함수의 소스 코드를 모두 정리하여 소스 9-7에 나타내었다.

    소스 9-7 ResizeDlg.cpp 파일 전체 코드(ResizeDlg.cpp)
    CResizeDlg::CResizeDlg(CWnd* pParent /*=NULL*/)
        : CDialogEx(IDD_RESIZE, pParent)
        , m_nOldWidth(0)
        , m_nOldHeight(0)
        , m_nNewWidth(0)
        , m_nNewHeight(0)
        , m_bAspectRatio(TRUE)
        , m_nInterpolation(0)
    {
    }
    …
    BOOL CResizeDlg::OnInitDialog()
    {
        CDialogEx::OnInitDialog();
    
        ((CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_WIDTH))->SetRange(1, 4096);
        ((CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_HEIGHT))->SetRange(1, 4096);
    
        m_nNewWidth = m_nOldWidth;
        m_nNewHeight = m_nOldHeight;
        UpdateData(FALSE);
    
        return TRUE;   // return TRUE unless you set the focus to a control
                       // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
    }
    
    void CResizeDlg::OnEnChangeNewWidth()
    {
        if (GetDlgItem(IDC_INTERPOLATION) == NULL)
            return;
    
        if (m_bAspectRatio)
        {
            UpdateData(TRUE);
            m_nNewHeight = m_nNewWidth * m_nOldHeight / m_nOldWidth;
            UpdateData(FALSE);
        }
    }
    
    void CResizeDlg::OnEnChangeNewHeight()
    {
        if (GetDlgItem(IDC_INTERPOLATION) == NULL)
            return;
    
        if (m_bAspectRatio)
        {
            UpdateData(TRUE);
            m_nNewWidth = m_nNewHeight * m_nOldWidth / m_nOldHeight;
            UpdateData(FALSE);
        }
    }
    
    void CResizeDlg::OnBnClickedAspectRatio()
    {
        UpdateData(TRUE);
    
        if (m_bAspectRatio)
        {
            m_nNewHeight = m_nNewWidth * m_nOldHeight / m_nOldWidth;
            UpdateData(FALSE);
        }
    }
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.