Сам же случайно и нашёл в чём проблема:
VC-шный визард по умолчанию в сгенерированном View (который растёт от ListView)
перелавливает WM_STYLECHANGED при помощи объявления пустой функции:
afx_msg void OnStyleChanged(...);
void ...View::OnStyleChanged(int /*nStyleType*/, LPSTYLESTRUCT /*lpStyleStruct*/)
{
// ничего не делает
}
Если в этой функции вызвать CListView::OnStyleChanged(), или её убрать вообще то всё заработает.
Интересно, они когда визарды делают, их тестируют?