|
최익수 님이 쓰신 글 :
: 안녕하세요?...꾸벅....^^
: 변함없이 모르는게 무지 많아서리...이렇게 질문을 올립니다.
:
: 다름이 아니라...ScrollBar에 대해서 묻고 싶은데요...
: ScrollBar의 "thumb tab"(그니까...스크롤바 가운데 있는거...)을 드래그하면
: OnChange나 OnScroll메세지가 계속 날라오는데....오직 position이 변경이 되어야지만
: 메세지가 오게할 수 있을까요?
:
: 그니까..."thumb tab"을 드래그 하던, 마우스로 양쪽의 버튼을 누르던지 간에
: 변경된 Position의 결과만 알고 싶습니다.
: 왜냐하면, 위의 메세지 핸들러를 썼더니 계속해서 핸들러가 불려지더라고요...
: 근데, 그러면 저희 프로그램은 버벅이거든요....^^
: 오직 변경이 되었을 때에만...딱 한번씩만 페이지를 변경하고 싶습니다.
:
: 아고...쉬운 얘기를 무지 어렵게 써놓은거 같군요....지송...^^;
:
: 그럼...좋은 답변 기대하며....
:
: 안녕히....꾸벅....
:
:
: 참...설날이 가까이 왔으니....새해인사를....^^
: 새해에는 돈들 많이 버시고....
: 무엇보다...건강 잃지 않기를 바라겠습니다...
: 새해 복 많이 받으세요~~~~
유앤아이 현지 아빠입니다
음 다른 각도에서 해결 하는 방법을 야그 해보도록 하겠습니다 ...
일반적으로 페스트 스크롤이란 기능을 야그 하는데요~
그 기능은 다음과 같은 것입니다 ...
엄청나게 큰 텍스트 문서를 에디터에 올리고 ... 스크롤을 하다가 보면 ...
맨 위에 몇줄만 계속 바뀌다가 .... 스크롤이 끝나 시점에서 원하는 페이지가 쭉 출력되는
그런 모습을 보셨을 겁니다 ...
이걸 구현 하는 방법이요 그리 어렵지 않습니다 ...
스크롤 메세지를 받아서 다시 그리는 부분을 다음과 같이 작성합니다 ...
RePaint()
{
RepaintAgain = false;
.....
.....
.....
if(RepaintAgain) return; // 그리는 루프안에 언제라도 빠저나갈수 있도록 조치한다.
.....
.....
.....
}
메세지를 받는 부분에서는
ReciveMessage()
{
RepaintAgain = true; // 아직도 그리고 있는 부분이 있다면 무조건
// 빠저나가도록 프래그를 세운다.
RePaint(); // 그 페이지를 다시 그리게 한다.
}
에구 이해 하실 련지 ...
암튼 이런식으로 짜놓으면 ....
미처 위에 3줄 밖에는 못그리고 있는 상황에서 ... 또 스크롤 메세지가 들어오면 ...
3줄 밖에 못그리던놈은 ... 그냥 빠져나가 버리고,... 다시 처음 부터 그리게 됩니다 ...
그래서 맨위만 자꾸 바뀌다가 ,,, 스크롤 메세지가 끝나는 그 시점에 최종적으로
한페이지가 다그려지게 되는거지요~
그럼 성공 하시길........
|