두 속성을 모두 설정하는 목록 상자가 있습니다. 즉, 세로 및 가로 스크롤을 true로 설정했습니다. 세로 스크롤 막대를 가져올 수 있지만 긴 문자열을 추가 할 때 가로 스크롤 막대를 가져올 수 없습니다.목록 상자에 가로 스크롤이 안되나요?
누구든지 목록 상자에 가로 스크롤 막대가 표시되는 방법을 알려주세요.
두 속성을 모두 설정하는 목록 상자가 있습니다. 즉, 세로 및 가로 스크롤을 true로 설정했습니다. 세로 스크롤 막대를 가져올 수 있지만 긴 문자열을 추가 할 때 가로 스크롤 막대를 가져올 수 없습니다.목록 상자에 가로 스크롤이 안되나요?
누구든지 목록 상자에 가로 스크롤 막대가 표시되는 방법을 알려주세요.
이 코드를 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;
}
가로 스크롤 범위 (최대 너비 (픽셀))를 지정해야합니다. CListBox :: SetHorizontalExtent를 호출하여이를 수행하십시오.
MFC에서 너무 커서 목록 상자가 포함 된 창의 오른쪽 테두리를 지나서 확장되었습니다. 목록 상자 x 치수를 창 내부에 맞추면 스크롤바가 다시 제대로 작동하기 시작합니다.
목록 상자가 너무 크면 어떤 이유로 Windows에서 크기 조정의 부작용으로 스크롤 막대 가시성을 제대로 처리하지 못했습니다.