도구 상자 - Slider Control 생성하고 그 옆에 Edit Control을 만든다.
ID는 다음과 같이 변경했다.
에디트 컨트롤 속성의 숫자를 True로 하면 숫자만 입력되게끔 할 수 있다.
슬라이더 컨트롤은 범주 컨트롤로 변수 추가하고
에디트 컨트롤은 값 CString으로 변수를 추가한다.
OnInitDialog() 에 다음과 같이 추가한다.
BOOL CdeltaControlDlg::OnInitDialog()
{
//...
SliderInit(&m_sliderX);
SliderInit(&m_sliderY);
SliderInit(&m_sliderZ);
m_strX.Format(_T("%d"), 0);
m_strY.Format(_T("%d"), 0);
m_strZ.Format(_T("%d"), -260);
UpdateData(FALSE);
//...
}
//...
void CdeltaControlDlg::SliderInit(CSliderCtrl* slider)
{
if (slider->GetDlgCtrlID() == IDC_SLIDER_X || slider->GetDlgCtrlID() == IDC_SLIDER_Y) {
slider->SetRange(-150, 150); // 슬라이더 컨트롤의 최소/최대값 설정
slider->SetPos(0); // 슬라이더 컨트롤의 위치 설정
}
else if (slider->GetDlgCtrlID() == IDC_SLIDER_Z) {
slider->SetRange(-380, -260);
slider->SetPos(-260);
}
slider->SetTicFreq(1); // 눈금 간격 설정, 속성의 눈금과 자동 눈금이 True 설정 시
slider->SetLineSize(1); // 키보드 방향키로 움직였을 때의 간격 설정
}
원래 OnInitDialog() 안에서 . 으로 멤버함수를 쓰면 되는데 슬라이더 컨트롤이 3개나 되서 함수화 해줬다.
속성 또는 클래스 마법사에서 WM_HSCROLL 메시지 처리기를 추가한다.
만약 세로 슬라이더라면 WM_VSCROLL 을 사용하면 된다.
메시지 처리함수에 다음과 같이 추가한다.
전달된 파라미터 pScrollBar를 사용하여 어떤 슬라이더인지 검사 후 필요한 코드를 작성한다.
void CdeltaControlDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
//CSliderCtrl* pSlidCtrl = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_X);
CSliderCtrl* pSlidCtrl = (CSliderCtrl*)pScrollBar;
if (pSlidCtrl->GetDlgCtrlID() == IDC_SLIDER_X) {
m_strX.Format(_T("%d"), pSlidCtrl->GetPos()); // .GetPos() 슬라이더의 위치값 읽기
}
else if (pSlidCtrl->GetDlgCtrlID() == IDC_SLIDER_Y) {
m_strY.Format(_T("%d"), pSlidCtrl->GetPos());
}
else if (pSlidCtrl->GetDlgCtrlID() == IDC_SLIDER_Z) {
m_strZ.Format(_T("%d"), pSlidCtrl->GetPos());
}
// 슬라이더 컨트롤의 위치가 변경될 때마다 에디트 컨트롤의 텍스트를 수정한다.
UpdateData(FALSE);
CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}
'프로그래밍 > MFC (C++)' 카테고리의 다른 글
MFC ] 라디오 버튼 그룹 지정하여 사용하기 + 초기값 지정하기 (0) | 2022.09.13 |
---|---|
MFC ] 리스트 컨트롤 첫번째 열 가운데 정렬하는 법 (0) | 2022.09.13 |
MFC ] 윈도우 크기 조절 또는 고정하기, 최소/최대 사이즈 지정 (0) | 2022.08.28 |
MFC ] 시리얼 통신으로 LED 제어하기 (3) + MySQL (IoT) (0) | 2022.07.17 |
MFC ] 실시간 그래프 그리는 법 Real-Time-Chart (3) | 2022.07.17 |