I have to admit I don't really understand everything being explained in the thread, but no worries: it works now. I'll just give a short report for any interested parties too lazy to check the thread you mentioned: PROBLEM: Stop CListCtrl column headers from being resized. SOLUTION: Let your view handle the HDN_BEGINTRACK message and have it return TRUE. void CMyList::OnBegintrack(NMHDR* pNMHDR, LRESULT* pResult) { HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR; *pResult = TRUE; } BUG: Something about the class wizard messing up and another thing about unicode and ansi, which results in your handler never being called. FIX: Edit your message map manually. First remove: ON_NOTIFY_REFLECT(HDN_BEGINTRACK,OnBeginTrack) And instead add: ON_NOTIFY(HDN_BEGINTRACKW, 0, OnBegintrack) ON_NOTIFY(HDN_BEGINTRACKA, 0, OnBegintrack) That's it. Thanks 4 the help, guys.