Re: 2 CListCtrl with one hor. scrollbar
Doug Harrison [MVP] schrieb:
On Sun, 10 Sep 2006 21:40:53 +0200, Johann Obermayr
<Johann.Obermayr@fastrun.at> wrote:
I had test it with this.
But with move scrollbar ( SB_THUMBTRACK ) it wouldn't work.
BOOL CExListCtrl::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam,
LRESULT* pResult)
{
BOOL bOk = __super::OnWndMsg(message, wParam, lParam, pResult);
switch(message)
{
case WM_HSCROLL:
if (m_pBrotherCtrl)
m_pBrotherCtrl->SendMessage(message, wParam, NULL);
break;
}
return bOk;
}
Sorry, I wasn't clear. The WM_[HV]SCROLL messages notify you that the
scrollbox position has changed. You'll need to update the 2nd control's
scrollbar using SetScrollPos.
i will test it.
And more information. On the list2 i will hide the scrollbar. at this time
i do it with
void CExJimListCtrl::OnNcCalcSize(BOOL bCalcValidRects,
NCCALCSIZE_PARAMS* lpncsp)
{
if (m_nScrollOff >= 0)
{
if(m_nScrollOff == SB_HORZ) ModifyStyle(WS_HSCROLL ,0,0); //Just
by modifing the style we remove the scrollbar
if(m_nScrollOff == SB_VERT) ModifyStyle(WS_VSCROLL,0,0);
if(m_nScrollOff == SB_BOTH) ModifyStyle(WS_HSCROLL |
WS_VSCROLL,0,0);
}
__super::OnNcCalcSize(bCalcValidRects, lpncsp);
}
Much of the time, ModifyStyle doesn't work after the control has been
created; in such cases, you need to destroy the control and recreate it
with the desired style. But you're in luck, for there is a dedicated
function ShowScrollBar that you should be using. That said, I'm not sure
why you'd do any of this in OnNcCalcSize; it doesn't feel like the right
place.
This will work. see
http://www.codeproject.com/listctrl/listctrlsbhide.asp
Jimmy