반응형

http://blog.naver.com/intencelove?Redirect=Log&logNo=20102281965



DE: MSVS2005 - dialog based

갑자기 슬라이더 컨트롤을 사용할 일이 생겼서 오랜만에 사용하다 보니 헷갈리는 부분이 있어, 조금 헤맸습니다. 그래서 이렇게 잊어 버리지 않기 위해 포스팅을 해요!!

 

 

Dialog에 slider control을 붙인다.

위의 그림은 defualt값이 아니라 속성을 추가 하여 준것입니다. (orientation, point 2개의 속성 추가)

 

그리고 slider bar의 ID를 IDC_SLIDER_* 로 설정한 후 (* 표시는 사용자의 임의로 정합니다.)

멤버 변수를 control type인 CSliderCtrl 로 해준다.

멤버변수의 추가는 우선 슬라이더 컨트롤에서 마우스 오른쪽 키를 누른다. 그럼 아래의 그림처럼 속성이 보일 것입니다.

 

6.0을 사용하시는 분은 ctrl + w (class wizard 단축키)를 통해 추가 하시면 될 것같습니다.

그럼 아래와 같은 그림을 통해서 추가 하시면 여러분의 헤더파일에 CSliderCtrl m_ctrlSlider라고 생길 거예요^^

 

그리고 여러분의 *.C 파일에 OnInitDialog()에 아래 부분의 소스를 추가 해주시면 됩니다.

혹시나 slider bar의 인자들이 궁금하시다면 아래 포스팅을 참조 하세요^^

http://blog.naver.com/intencelove/20102277196 

 // slider control
 m_ctrlSlider.SetRange(0, 255); // slider 전체 크기
 m_ctrlSlider.SetPos(100);  // slider 초기 위치 
 m_ctrlSlider.SetTicFreq(10); // slider 눈금 간격
 m_ctrlSlider.SetSelection(40, 200);// slider focus range

 

그리고 나서 슬라이더가 이동했을때 발생하는 이벤트

OnNMReleasedcaptureSlider를 추가해주셔야 합니다. 다시 한번 슬라이더 컨트롤로 이동(리소스뷰)에서 슬라이더 컨트롤을 누르면 (2005의 경우 오른쪽에 아래그림과 같이 화면이 나타 납니다.)

6.0같은 경우 class wizard에서 이벤트 메시지를 추가해주면 될것같아요

 

 

그리고 난 후 슬라이더의 현재위치를 알기 위해 추가된 함수에 코딩을 하면 됩니다.

 

void CImageDlg::OnNMReleasedcaptureSliderThreshold(NMHDR *pNMHDR, LRESULT *pResult)
{
      m_ctrlSlider.GetPos(); //현재 슬라이더의 위치를 가져 옴
      *pResult = 0;
}

반응형

+ Recent posts