[VC++|MFC] 스마트폰처럼 스크롤시키기

프로그램의 콘텐츠 영역 (윈도우) 을 손가락으로 눌러 이동시키는 방식의 윈도우 클래스입니다.

손가락을 떼는 순간에도 손가락 이동 속도대로 계속 스크롤이 유지하면서 스크롤이 점점 감속되는 방식으로  스마트폰의 그것을 마우스로 할 수 있도록 구현하였습니다.

 

이 기능을 CFingerScrollWindow 클래스 (FingerScroll.h, FingerScroll.cpp) 가 해주므로 이 클래스를 상속받은 윈도우를 정의해서 UI 를 구성하시면 될것 같습니다.

예제에서는 CFingerScrollWindow 를 상속받아 최종적으로 CFScrollImple 클래스가  스크롤되는 윈도우로 보여지며 여기에 버튼들도 배치하였습니다.

 

CFingerScrollWindow 클래스는 Code Project 사이트에 공개된 CScrollWindow 와 CWindowScroller 를 사용하여 동작되므로 이 클래스와 관련된 파일 (ScrollWindow.h, ScrollWindow.cpp, WindowScroller.h, WindowScroller.cpp) 도 프로젝트에 포함하여야 합니다.

코드 프로젝트의 CScrollWindow : http://www.codeproject.com/Tips/24564/Scroll-Window

코드 프로젝트의 CWindowScroller : http://www.codeproject.com/Articles/3494/CWindowScroller

 

코딩작업하실 때의 사용법은 예제에서 CFingerScrollTestDlg::OnInitDialog 메소드의 아래 코드처럼

    m_pFScrollImpl = new CFScrollImple;
    if(m_pFScrollImpl->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_TABSTOP, rect, this, 89000) == FALSE)
    	return -1;
    m_pFScrollImpl->SetScrollSizes(CSize(1024, 768));
    m_pFScrollImpl->ShowWindow(SW_SHOW);

스크롤 윈도우의 부모 윈도우의 OnInitDialog 나 OnCreate 메소드에서 CFingerScrollWindow 클래스 혹은 이를 상속한 클래스를 생성하여 부모윈도우에 붙여주고 스크롤 크기를 지정해주면 됩니다.

 

예제 프로젝트와 소스는 여기서 다운받으세요.

 

 

가져가실 때 이곳이나 페이스북에 댓글이라도 남겨주세요. ㅎㅎ

 

 

이 글을 공유하기:

Be the first to comment

Leave a Reply