Language & API/MFC
MFC Slider Control(슬라이더 컨트롤) 사용법
강한퓨전
2021. 5. 26. 10:42
OPENCV를 MFC에서 테스트 중 슬라이더 콘트롤을 사용하는 일이 생겼다.
** 예는 Range Setting 할때 사용
위와 같이 만들면 UI 구성은 끝났다.
처음 로딩 될때 UB UG UR 은 255로 DB DG DR은 0으로 세팅으로 진행하며 스크롤이 움직일때 텍스트 박스에 표시를 해주려 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
ui_slider_set(&m_slider_ub);
ui_slider_set(&m_slider_ug);
ui_slider_set(&m_slider_ur);
ui_slider_set(&m_slider_db);
ui_slider_set(&m_slider_dg);
ui_slider_set(&m_slider_dr);
m_slider_ub.SetPos(255);
m_slider_ug.SetPos(255);
m_slider_ur.SetPos(255);
m_slider_db.SetPos(0);
m_slider_dg.SetPos(0);
m_slider_dr.SetPos(0);
m_edit_ub.SetWindowTextW(_T("255"));
m_edit_ug.SetWindowTextW(_T("255"));
m_edit_ur.SetWindowTextW(_T("255"));
m_edit_db.SetWindowTextW(_T("0"));
m_edit_dg.SetWindowTextW(_T("0"));
m_edit_dr.SetWindowTextW(_T("0"));
|
cs |
아래 함수 소스 부분이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
void setting_dlg::ui_slider_set(CSliderCtrl *slider)
{
slider->SetRange(0, 255);
slider->SetRangeMin(0);
slider->SetRangeMax(255);
slider->SetTicFreq(10); //Tick marks auto ticks -> true
slider->SetLineSize(1); //키보드로 움직일시
slider->SetPageSize(1); //마우스또는 paup 움직일시
}
|
cs |
Slider 함수 관련 도움말은 아래를 참조 하기 바란다.
CSliderCtrl 클래스 | Microsoft Docs
아래는 스크롤 바를 움직였을때 텍스트 화면이 같이 움직이게 하는 기능을 넣어볼것이다.
아래 함수에 기능을 추가 시켜 보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
void setting_dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CString temp_str;
int nSPos = 0;
if (pScrollBar)
{
if (pScrollBar == (CScrollBar*)&m_slider_ub)
{
nSPos = m_slider_ub.GetPos();
temp_str.Format(_T("%d"), nSPos);
m_edit_ub.SetWindowTextW(temp_str);
}
else if (pScrollBar == (CScrollBar*)&m_slider_ug)
{
nSPos = m_slider_ug.GetPos();
CString tointaa;
tointaa.Format(_T("%d"), nSPos);
m_edit_ug.SetWindowTextW(tointaa);
}
else if (pScrollBar == (CScrollBar*)&m_slider_ur)
{
nSPos = m_slider_ur.GetPos();
temp_str.Format(_T("%d"), nSPos);
m_edit_ur.SetWindowTextW(temp_str);
}
else if (pScrollBar == (CScrollBar*)&m_slider_db)
{
nSPos = m_slider_db.GetPos();
temp_str.Format(_T("%d"), nSPos);
m_edit_db.SetWindowTextW(temp_str);
}
else if (pScrollBar == (CScrollBar*)&m_slider_dg)
{
nSPos = m_slider_dg.GetPos();
temp_str.Format(_T("%d"), nSPos);
m_edit_dg.SetWindowTextW(temp_str);
}
else if (pScrollBar == (CScrollBar*)&m_slider_dr)
{
nSPos = m_slider_dr.GetPos();
temp_str.Format(_T("%d"), nSPos);
m_edit_dr.SetWindowTextW(temp_str);
}
}
CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}
|
cs |
실행을 시켜 보면 아래와 같이 동작하는 모습을 보일 것이다.