본문 바로가기

이전글

MFC에서 Spin Control button 사용하기

간단한 다이얼로그 기반의 어플리케이션을 만들 때 EditBox 콘트롤에 숫자를 넣고 마우스를 이용해 값을 변경할 때 사용한다.

 

위에 '한 번에 다음 줄식(N)' 밑에 EditBox 와 같이 붙어있는 <> 버튼이 Spin 콘트롤이다. 이 컨트롤을 마우스로 누를 때 마다 숫자가 증가하거나 감소하는 것을 알 수 있다.

 

이제 간단한 작성법을 알아보자.

VC++ 프로그램을 실행시켜 Dialog 기반의 MFC 프로그램을 생성한다. 그 다음 Dialog를 디자인 한다.

 

Edit Box 옆에 Spin Control 이 붙어 있는 모습을 볼 수 있다. 실행 시키기 전에 간단한 설정을 해보자. Spin Ctrl 이 edit box 와 상호 작용하기 위해서 연결해주어야 한다. 이 연결을 자동을 해주는 옵션이 있는데 Spin Control 의 Properties에 들어가면 다음 화면에서 Auto buddySet buddy integer를 체크 해주면 된다. 그려면 Tab order(Tab을 누르면 포커스가 움직이는 순서)에 따라 앞에 따라오는 Control 과 자동으로 버디를 맺을 수 있게 해준다.

 

Tab order를 설정하기 위해서 메뉴의 Layout->Tab order(Ctrl+D)를 선택하면 다음 화면이 나오는데 Control들의 순서를 원하는대로 클릭하면 번호가 자동으로 매겨진다.

 

이렇게 설정을 해 놓으면 모든 준비는 끝이 난다. 실행하면 자동으로 연결되어 Spin Control로 값이 변경되는 것을 확인 할 수 있다.

 

☞☞ 추가적으로 Spin Control을 설정하기 위한 함수를 보면 다음과 같다.

void SetRange( int nLower, int nUpper );
:
조종할 값의 범위를 설정하는 함수

BOOL SetAccel( int nAccel, UDACCEL* pAccel );    
:
한번에 바뀌는 숫자의 크기와 값이 변경되는 시간을 설정하는 함수이다. 이를 위해 UDACCEL이라는 구조체를 사용하는데 다음과 같다.

typedef struct {
UINT nSec;     //
시간 Interval
UINT nInc;     //
증감 Interval
}UDACCEL, FAR *LPUDACCEL;