Ensure (partial) visibility of a column
Posted
by Daniel Frey
on September 3rd, 1998
CListCtrl::EnsureVisible(). Usage should be pretty much obvious :)
This code was developed with VC++ 5.0 (SP3), Windows NT 4.0 (SP3) and the new COMCTL32.DLL (v4.72)
bool CMyListCtrl::EnsureColumnVisible(int nColumn, bool bPartialOK)
{
CHeaderCtrl* pHeader = reinterpret_cast(GetDlgItem(0));
ASSERT(pHeader->IsKindOf(RUNTIME_CLASS(CHeaderCtrl)));
CRect rcHeader;
Header_GetItemRect(pHeader->m_hWnd, nColumn, &rcHeader);
CRect rcClient;
GetClientRect(&rcClient);
int nOffset = GetScrollPos(SB_HORZ);
if(bPartialOK)
{
if((rcHeader.left - nOffset < rcClient.right) && (rcHeader.right - nOffset > 0))
{
return true;
}
}
int nScrollX = 0;
if((rcHeader.Width() > rcClient.Width()) || (rcHeader.left - nOffset < 0))
{
nScrollX = rcHeader.left - nOffset;
}
else if(rcHeader.right - nOffset > rcClient.right)
{
nScrollX = rcHeader.right - nOffset - rcClient.right;
}
if(nScrollX != 0)
{
CSize size(nScrollX, 0);
Scroll(size);
}
return true;
}

Comments
Error in compiling.
Posted by Legacy on 04/23/1999 12:00amOriginally posted by: Carl Smith
Reply