2008년 07월 16일
CListCtrl 과 WM_TIMER
CListCtrl 클래스로 부터 파생하여 나만의 리스트컨트롤 클래스를 만들었다.
Large Icon View 방식으로 항목들을 현시하고 Multi Seleting 가능하다.
그런데 구현하고 보니 문제가 생겼다.
한 항목을 마우스로 클릭하여 선택하고 ListCtrl 을 스크롤 한다음 다음 항목을 추가로 선택하기 위해 Ctrl 키를 누르는 순간 이전에 선택된 항목이 표시되도록 리스트컨트롤이 자동으로 스크롤 된다.
다시 스크롤 한후 Ctrl 키를 누르면 이런 현상이 나타나지 않는다.
살펴보니 Ctrl 키 뿐 아니라 현재 선택된 항목이 보이지 않는 상태에서 아무 건반이나 누르면 선택된 항목으로 자동 스크롤 된다.
다시 누르는 경우에는 문제가 없다.
아무리 살펴봐도 이해가 되지 않아 다른 리스트컨트롤과 비교끝에 중요한 사실을 알아내였다.
...일반 List Ctrl 인 경우 일부분만 보이는 항목을 선택한 경우 잠시후에 자동으로 스크롤 되여 항목을 완전히 표시한다.
이 잠시후에 자동으로 스크롤 하는 동작을 구현하려면 WM_TIMER Message 를 이용하였을것이다....
나의 추리는 아주 정확하였다.
나의 컨트롤에서 어떤 이유로 하여 WM_TIMER Message Handler 를 재정의 하였는데 이때 Default 처리부 CListCtrl::OnTimer 를 호출해주지 않았었다.
처리부 마지막에 CListCtrl::OnTimer 를 호출해주니 문제가 없었다.
살펴보니 일부분만 보이는 항목을 선택한 경우 Timer ID = 43 으로 WM_TIMER 가 발생되였다.
앞으로 MessageHandler 에서 Default 처리부를 호출해주리라 굳은 결심을 다지였다.
Large Icon View 방식으로 항목들을 현시하고 Multi Seleting 가능하다.
그런데 구현하고 보니 문제가 생겼다.
한 항목을 마우스로 클릭하여 선택하고 ListCtrl 을 스크롤 한다음 다음 항목을 추가로 선택하기 위해 Ctrl 키를 누르는 순간 이전에 선택된 항목이 표시되도록 리스트컨트롤이 자동으로 스크롤 된다.
다시 스크롤 한후 Ctrl 키를 누르면 이런 현상이 나타나지 않는다.
살펴보니 Ctrl 키 뿐 아니라 현재 선택된 항목이 보이지 않는 상태에서 아무 건반이나 누르면 선택된 항목으로 자동 스크롤 된다.
다시 누르는 경우에는 문제가 없다.
아무리 살펴봐도 이해가 되지 않아 다른 리스트컨트롤과 비교끝에 중요한 사실을 알아내였다.
...일반 List Ctrl 인 경우 일부분만 보이는 항목을 선택한 경우 잠시후에 자동으로 스크롤 되여 항목을 완전히 표시한다.
이 잠시후에 자동으로 스크롤 하는 동작을 구현하려면 WM_TIMER Message 를 이용하였을것이다....
나의 추리는 아주 정확하였다.
나의 컨트롤에서 어떤 이유로 하여 WM_TIMER Message Handler 를 재정의 하였는데 이때 Default 처리부 CListCtrl::OnTimer 를 호출해주지 않았었다.
처리부 마지막에 CListCtrl::OnTimer 를 호출해주니 문제가 없었다.
살펴보니 일부분만 보이는 항목을 선택한 경우 Timer ID = 43 으로 WM_TIMER 가 발생되였다.
앞으로 MessageHandler 에서 Default 처리부를 호출해주리라 굳은 결심을 다지였다.
# by | 2008/07/16 18:20 | 컴퓨터 | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]