더북(TheBook)

새로 추가한 OnInitDialog 함수에서는 밝기와 명암비 조절 슬라이더 컨트롤의 초기화 작업을 수행할 것이다. 일단 추가할 소스 코드를 살펴보고, 소스 코드의 의미에 대해 설명하도록 하겠다. OnInitDialog 함수에 입력해야 할 사항들은 소스 6-7에 나타내었다.

소스 6-7 OnInitDialog 함수에서 슬라이더 컨트롤 초기화(BrightnessContrastDlg.cpp)
BOOL CBrightnessContrastDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // 밝기 조절 슬라이더 컨트롤 초기화
    m_sliderBrightness.SetRange(-255, 255);
    m_sliderBrightness.SetTicFreq(32);
    m_sliderBrightness.SetPageSize(32);

    // 명암비 조절 슬라이더 컨트롤 초기화
    m_sliderContrast.SetRange(-100, 100);
    m_sliderContrast.SetTicFreq(20);
    m_sliderContrast.SetPageSize(20);

    return TRUE; // return TRUE unless you set the focus to a control
                 // 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
}

각각의 슬라이더에 대해 세 개의 함수를 호출하였다. 첫 번째 SetRange 함수는 슬라이더 컨트롤이 가리킬 수 있는 값의 범위를 지정한다. SetRange(-255, 255)라고 입력하면 슬라이더 컨트롤이 가리킬 수 있는 값의 범위가 최소 -255에서 최대 255로 지정된다. 이는 앞서 표 6-5에서 지정한 에디트 컨트롤 변수의 최솟값, 최댓값과 동일하게 설정한 것이다. 두 번째 SetTicFreq 함수는 슬라이더 컨트롤에 나타나는 눈금의 간격을 지정한다. 마지막 SetPageSize 함수는 슬라이더 컨트롤의 엄지 단추thumb 이외의 부분을 마우스로 클릭했을 때, 움직이는 값의 크기를 설정하는 함수이다. 예를 들어 명암비 조절 슬라이더 컨트롤에 대해 SetPageSize(20) 형태로 함수를 호출하였을 경우, 그림 6-17의 왼쪽 그림의 마우스 위치에서 마우스 왼쪽 버튼을 클릭하면 20만큼의 크기가 이동하여 오른쪽 그림처럼 된다. 슬라이더 컨트롤과 에디트 컨트롤의 초깃값은 자동으로 0으로 설정된다.

그림 6-17 슬라이더 컨트롤의 동작 모습

밝기/명암비 조절 대화 상자의 초기화 작업은 이 정도로 마무리하고, 이제 대화 상자 컨트롤들의 동작 제어 방법에 대해 알아보자. 밝기/명암비 조절 대화 상자에서는 크게 두 가지의 컨트롤 동작 제어가 필요하다. 하나는 사용자가 슬라이더 컨트롤을 움직일 때, 엄지 단추가 가리키는 위치의 값을 에디트 컨트롤에 써주는 기능이다. 반대로 에디트 컨트롤에 사용자가 숫자 값을 입력하면 해당 위치를 슬라이더 컨트롤이 가리키도록 조절해주어야 할 것이다.

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