더북(TheBook)

다음으로 감마 보정 대화 상자의 컨트롤 동작 제어 코드를 추가해보자. 밝기/명암비 조절 대화 상자 때와 마찬가지로 슬라이더 컨트롤에서 발생하는 가로 방향 스크롤 메시지를 처리하고, 에디트 컨트롤의 값이 변경될 때의 통지 메시지를 처리해야 한다. OnHScroll 함수와 OnEnChangeGammaEdit 함수를 각각 추가하고, 함수의 정의에 소스 6-14와 같이 코드를 입력해보자.

소스 6-14 감마 보정 대화 상자 컨트롤 동작 제어(GammaCorrectionDlg.cpp)
void CGammaCorrectionDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    if (m_sliderGamma.GetSafeHwnd() == pScrollBar->GetSafeHwnd())
    {
        int pos = m_sliderGamma.GetPos();
        m_fGamma = (pos / 50.f);
        UpdateData(FALSE);
    }

    CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CGammaCorrectionDlg::OnEnChangeGammaEdit()
{
    UpdateData(TRUE);
    m_sliderGamma.SetPos(static_cast<int>(m_fGamma * 50));
}

OnHScroll 함수에서는 슬라이더 컨트롤이 가리키는 위치의 정숫값을 받아 와서 50으로 나누어 m_fGamma 변수에 저장한다. 반대로 OnEnChangeGammaEdit 함수에서는 m_fGamma 값에 50을 곱하여 슬라이더 컨트롤의 위치를 지정하는 것을 볼 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.