2010-06-30 2 views
0

대화 상자 템플릿에서 비주얼 레이아웃 옵션에 체크리스트 상자가 표시되지 않았기 때문에 ListBox를 배치했습니다. 나는 owner-draw로 설정하고 DDX를 사용하여 관련 클래스 변수를 CListBox 유형에서 CCheckListBox로 변경합니다. 즉, 마법사가 나를 위해 수행하는 변경 사항은 owner-draw로 설정되고 멤버를 변경합니다 가변형. 올바른 문자열, 4 개 항목과 선택 하나, MFC : CCheckListBox 항목이 겹칩니다.

m_List.AddString(_T("One")); 
m_List.AddString(_T("Two")); 
m_List.AddString(_T("Three")); 
m_List.AddString(_T("Four")); 
m_List.SetCheck(1,1); 

나는 목록을 실행

가 :

내 대화의 OnInitDialog 방법에 나는 그와 함께 테스트합니다. 그러나 항목 높이가 잘못되었습니다. 확인란의 높이가 항목 높이를 결정하는 데 사용되어 아래 항목과 겹치는 텍스트로 이어지는 것 같습니다.

각 항목의 높이를 개별적으로 설정하지 않아도 클래스의 기본 동작을 이해하면 안됩니까?

MSDN에서

답변

1

: 당신의 체크리스트 상자는 기본 체크리스트 상자, 기본 CCheckListBox을 사용할 수 있습니다 (각의 왼쪽에있는 디폴트 사이즈의 체크 박스가 와 문자열 목록)입니다

경우 :: DrawItem을 사용하여 체크리스트 상자를 그립니다. 그렇지 않으면 이 CListBox :: CompareItem 함수와 CCheckListBox :: DrawItem 및 CCheckListBox :: MeasureItem 함수를 재정의해야합니다.

기본 구현을 호출하거나 자신의 MesaureItem/DrawItem을 구현해야합니다. 아마도 아이템이 겹치는 것처럼 보입니다.