2008-10-31 3 views
1

나는 CListBox에서 파생되는 클래스를 사용하고, 다음으로 만들기 : MeasureItem() 메서드에서 크기를 지정해도 목록 상자의 크기를 변경할 때 CListBox의 항목 크기가 변경 되었습니까?

style:WS_CHILD|WS_VISIBLE |LBS_OWNERDRAWFIXED | WS_VSCROLL | WS_HSCROLL 

내가 목록 상자의 항목이 고정 된 크기가 아닌 목록 상자의 크기에 영향이있을 것으로 예상. 목록 상자의 크기 변화에 따라

void CMyListBox::MeasureItem(LPMEASUREITEMSTRUCT lpMIS) 
{ 
    lpMIS->itemHeight = ALBUM_ITEM_HEIGHT; 
    lpMIS->itemWidth = ALBUM_ITEM_WIDTH; 
} 

그러나 항목의 크기 변경 : 그래서 나는 다음과 같은 항목의 크기를 지정하는 MeasureItem() 메소드를 재정의합니다. 내 접근 방식에 문제가 있습니까? 당신이 CListBox::MeasureItem에 대한 MSDN 항목을 보면

답변

0

당신은 LBS_OWNERDRAWVARIABLE (안 LBS_OWNERDRAWFIXED) 스타일이 설정되어 있지 않으면이 한 번만라고 볼 수 있습니다. 올바르게 이해하면 컨트롤의 크기가 변경 될 때마다 MeasureItem을 호출해야하므로 표시되는 동작을 설명 할 수 있습니다.

또한 포인트는 MFC Technical Note 14 : Custom Controls으로 간주 했습니까?

1

참고로 언급되지 않은 내용은*_OWNERDRAWFIXED 컨트롤의 크기가 조정될 때마다 을 이라고합니다.

그러나이 동작이 공식적이며 신뢰할 수 있는지 여부는 잘 모르지만 CodeGuru과 Google의 여러 가지 포럼 게시물에서 확인되었습니다.

메시지를 처리하고 싶지 않으면 다음 번에 설정했는지 확인하는 즉시 첫 번째 OnMeasureItem() 통화의 비공개 플래그를 설정하고 그곳에서 개인 플래그를 설정하십시오.

관련 문제