Fix resizing problem in above article
Posted
by Serge Wautier
on August 6th, 1998
Override CListCtrl::OnNotify as follows : BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT*pResult) { HD_NOTIFY *pHD = (HD_NOTIFY*)lParam; if ((pHD->hdr.code == HDN_ITEMCHANGINGA || pHD->hdr.code == HDN_ITEMCHANGINGW) && (GetStyle() & LVS_TYPEMASK) == LVS_REPORT) { // Invalidate empty bottom part of control to force erase the previous position of column int nBottom,nLastItem=GetItemCount()-1; if (nLastItem<0) nBottom=0; // List is empty : invalidate whole client rect else { // Get Y position of bottom of list (last item) RECT ItemRect; GetItemRect(nLastItem,&ItemRect,LVIR_BOUNDS); nBottom=ItemRect.bottom; } RECT rect; GetClientRect(&rect); if (nBottom<rect.bottom) { // Set top of rect as bottom of list (last item) : rect = empty part of list rect.top=nBottom; InvalidateRect(&rect); } // NB: We must to on with default processing. } *pResult = 0; return CListCtrl::OnNotify(wParam, lParam, pResult); } Simply adding a HDN_ITEMCHANGING or HDN_TRACK handler with ClassWizarddoesn't work. These handlers are not called. Why ??? I noticed that class wizard places an ON_NOTIFY_REFLECT(...) entry for these notifications. I'd rather put an ON_NOTIFY(...) since the notification comes from the header control to its parent (the listctrl). But Spy++ shows that the CtrlID of the header is 0. repplacing the ON_NOTIFY_REFLECT entry by ON_NOTIFY(HDN_xxx,0,f) didn't solve the problem. That's why I chose to override OnNotify()

Comments
Column resizing
Posted by Legacy on 04/22/1999 12:00amOriginally posted by: Srinivas Bandi
I have problems when resizing the column, the right side of the control is not repainted. Is there any fix for this problem. Please let me know if you have any update.
ReplyCListCtrl Redraw of grid lines on Scrolling
Posted by Legacy on 04/01/1999 12:00amOriginally posted by: Dharmesh Sethi
I am having a very similar problem. Similar barcode-like lines appear when I use the horizontal scroll bar. I am using an owner draw version of a CListCtrl derived class. If anyone has any solutions/suggestions pls let me know.
Otherwise is there any way for me to use the LVS_EX_GRIDLINES extended style for the CListCtrl and then change the color of the grid lines.
Thanks for any help,
Replydharmesh_sethi@rsco.com
This doesn't work for views.
Posted by Legacy on 03/02/1999 12:00amOriginally posted by: Bill Foust
No complaints, just an FYI. If you are using CListViews, this solution doesn't
work. I ended up calling OnEraseBkgnd() in OnPaint(). Probably not the best
solution, but it works. :)
Bill
Reply