2014-09-17 2 views
1

두 속성을 모두 설정하는 목록 상자가 있습니다. 즉, 세로 및 가로 스크롤을 true로 설정했습니다. 세로 스크롤 막대를 가져올 수 있지만 긴 문자열을 추가 할 때 가로 스크롤 막대를 가져올 수 없습니다.목록 상자에 가로 스크롤이 안되나요?

누구든지 목록 상자에 가로 스크롤 막대가 표시되는 방법을 알려주세요.

답변

2

이 코드를 OnInitDialog에 추가하면 내 문제가 해결되었습니다.

BOOL OnInitDialog() 
{ 
    CString str; 
    CSize sz; 
    int dx = 0; 
    CDC* pDC = m_listbox.GetDC(); 
    for(int i=0; i < m_listbox.GetCount();i++) 
    { 
     m_listbox.GetText(i,str); 
     sz = pDC->GetTextExtent(str); 

     if(sz.cx > dx) 
      dx = sz.cx; 

    } 
    m_listbox.ReleaseDC(pDC); 

    if(m_listbox.GetHorizontalExtent() < dx) 
    { 
     m_listbox.SetHorizontalExtent(dx); 
     ASSERT(m_listbox.GetHorizontalExtent() == dx); 

    } 

    return TRUE; 
} 
2

가로 스크롤 범위 (최대 너비 (픽셀))를 지정해야합니다. CListBox :: SetHorizontalExtent를 호출하여이를 수행하십시오.

0

MFC에서 너무 커서 목록 상자가 포함 된 창의 오른쪽 테두리를 지나서 확장되었습니다. 목록 상자 x 치수를 창 내부에 맞추면 스크롤바가 다시 제대로 작동하기 시작합니다.

목록 상자가 너무 크면 어떤 이유로 Windows에서 크기 조정의 부작용으로 스크롤 막대 가시성을 제대로 처리하지 못했습니다.

관련 문제