2007. 12. 26. 02:12

첨부된 소스파일은 Visual Studio 2005 (Service Pack 1) 에서 작성되었습니다.


방학 후 혼자 MFC 가지고 놀고 있습니다...
프로그래밍 내공(?) 수련중... 이라고 해도 될거 같군요~

한동안 프로그래밍 안하다가 단지 몇주만에 다시 간단한거 하나 하는데도 몇 시간이 걸려 버리는군요... OTL

실행 화면입니다.
사용자 삽입 이미지
















스크롤바 컨트롤의  경우, 그냥 폼에 갖다 놓는다고 해서 작동하지는 않습니다.

직접 실행해 보신분들은 아시겠지만...
마우스로 움직여도 원래 위치로 되돌아가고 맙니다.

그럼 천천히 시작해 보도록 하죠~

1. ScrollBarEx 라는 프로젝트 명으로 MFC 프로젝트 생성
2. 다이얼로그 기반 으로 선택 후, '마침' 선택

컨트롤 ID 설정(기본값 사용했습니다)
IDC_EDIT1
IDC_EDIT2
IDC_SCROLLBAR1
IDC_SCROLLBAR2

IDC_SCROLLBAR1 - 가로, IDC_EDIT1 - 가로 위치
IDC_SCROLLBAR2 - 세로, IDC_EDIT2 - 세로 위치



ScrollBarExDlg.h 파일에 다음과 같이 변수를 선언합니다.
사용자 삽입 이미지









ScrollBarExDlg.cpp 에 다음과 같이 초기값을 지정해 줍니다.
사용자 삽입 이미지





















OnInitDialog 부분은 다이얼로그가 생성되면서 실행되는 부분입니다.
따라서, 여기에 변수나 컨트롤의 초기화를 해 주면 딱 좋은 위치입니다.



폼의 WM_HSCROLL 메시지 부분입니다.
이 부분을 설정함으로써, 드디어 스크롤바가 정상작동을 하게 됩니다.
사용자 삽입 이미지





















SB_LINELEFT, SB_LINERIGHT는 각각 좌,우의 삼각형 모양 (◁,▷)을 클릭했을때 입니다.
SB_PAGELEFT, SB_PAGERIGHT는 각각 현재 위치 기준으로 좌, 우의 빈칸을 클릭했을때 입니다.
SB_THUMBTRACK 은 위치를 고정시키는 부분입니다.
(요거 빼먹으면 위 코드들은 말짱 도루묵 된다는 거~)



세로 스크롤바도 가로 스크롤바와 비슷합니다.
폼의 WM_VSCROLL 메시지 입니다.
사용자 삽입 이미지





















여기까지 입니다.

SB_LINEUP, SB_LINEDOWN, SB_PAGEUP, SB_PAGEDOWN은 위 가로 스크롤바와 기능이 비슷하므로 설명 생략합니다.

한가지 추가로 적자면... 이 부분 소스는 맨 아랫줄 1줄을 제외하고 건들필요 없습니다.
SB_LINEUP, SB_LINEDOWN, SB_PAGEUP, SB_PAGEDOWN는 각각
SB_LINELEFT, SB_LINERIGHT, SB_PAGELEFT, SB_PAGERIGHT로 두어도 정상적으로 동작합니다.

컴파일 후 실행하면 OK~
Posted by 해비