티스토리 뷰
그림을 넣고 그 아래에 가로로 스크롤바를 달아서 그림을 좌우로 스크롤 되게 할 경우
적당한 스크롤바의 인포는 다음과 같이 설정한다.
int nScrollBarSize = m_nSize - DISPLAY_WIDTH + m_nSize/10; //스크롤바의 크기 때문에 이렇게 조금 빼줘야 한다.
nScrollBarSize = nScrollBarSize>0?nScrollBarSize:0;
SCROLLINFO si;
si.fMask = SIF_ALL;
si.nMax = nScrollBarSize;
si.nMin = 0;
si.nPage = m_nSize/10;
si.nTrackPos = 0;
si.nPos = 0;
m_scrollTime.SetScrollInfo(&si);
여기서 DISPLAY_WIDTH는 그림이 표시되는 실제 영역의 가로 크기이다.
m_nSize는 그림의 가로 크기이다.
예를 들어 그림 크기가 1000px이고, 이를 400px짜리 화면에 출력하려면
DISPLAY_WIDTH는 400이고 m_nSize는 1000인 것이다.
위 식처럼 해 줄 경우, 스크롤바 사이즈와 그림 스크롤 영역의 움직임이 딱 매칭된다.
OnHScroll은 아래와 같은 식으로 해주면 됨.
void CDlgXXXXXX::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if( pScrollBar )
{
if( pScrollBar == (CScrollBar*)&m_scrollTime )
{
SCROLLINFO si;
if( pScrollBar->GetScrollInfo(&si) )
{
switch(nSBCode)
{
case SB_PAGELEFT:
si.nPos -= si.nPage;
break;
case SB_PAGERIGHT:
si.nPos += si.nPage;
break;
case SB_LINELEFT:
si.nPos -= si.nPage/10;
break;
case SB_LINERIGHT:
si.nPos += si.nPage/10;
break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
si.nPos = si.nTrackPos;
break;
}
m_nPos = si.nPos;
pScrollBar->SetScrollPos(si.nPos);
{
if( pScrollBar )
{
if( pScrollBar == (CScrollBar*)&m_scrollTime )
{
SCROLLINFO si;
if( pScrollBar->GetScrollInfo(&si) )
{
switch(nSBCode)
{
case SB_PAGELEFT:
si.nPos -= si.nPage;
break;
case SB_PAGERIGHT:
si.nPos += si.nPage;
break;
case SB_LINELEFT:
si.nPos -= si.nPage/10;
break;
case SB_LINERIGHT:
si.nPos += si.nPage/10;
break;
case SB_THUMBPOSITION:
case SB_THUMBTRACK:
si.nPos = si.nTrackPos;
break;
}
m_nPos = si.nPos;
pScrollBar->SetScrollPos(si.nPos);
//그래프를 다시 그린다.
InvalidateGraph();
}
InvalidateGraph();
}
}
}
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
}
나중에 필요할 때 그대로 배껴쓰자~
'Development > Windows' 카테고리의 다른 글
[MFC] 아무리 봐도 햇깔리는 화면 좌표에 관련 한 것.. (0) | 2011.10.17 |
---|---|
[MFC] 아이콘이 안바껴요. 아이콘 바꾸기! (0) | 2011.09.21 |
[MFC] Temp 폴더 경로 얻어와서 새 파일 이름 만들기 (0) | 2011.08.29 |
[MFC] 리소스가 꼬이는 문제 (0) | 2011.08.19 |
[MFC] class에서 static 멤버 변수 쓰기 (0) | 2011.07.28 |
[MFC] 유니코드와 멀티바이트로 작성된 프로그램과 DLL 사용 안됨. (0) | 2011.07.28 |
[MFC] 일본어 폰트 지원 문제에 관련해서 (0) | 2011.07.26 |
[MFC] CTreeCtrl font 관련 설정 바꾸기. (0) | 2011.07.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- kering
- 리눅스
- Quiz
- database
- NDK
- db
- 드라이버
- jni강좌
- linux
- java
- 안드로이드
- MFC
- Visual C++
- jni
- gcc
- 음악
- C
- source
- AWS
- Cloud
- Troubleshooting
- android
- winapi
- C++
- API
- Python
- driver
- it
- algorithm
- 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함