앞에서 설명한 CResizeDlg 클래스 멤버 함수의 소스 코드를 모두 정리하여 소스 9-7에 나타내었다.
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); } }