Test post

Community Server Comments

Comments aren't working using IE, are they?

This post isn't aggregated and just for testing purpose, so submit whatever comments you want. It will be deleted anyway, once this issue is resolved.

"Read This First"

Fun Comments
Congratulations! You have purchased an extremely fine
device that would give you thousands of years of trouble-free 
service, except that you undoubtably will destroy it via some 
typical bonehead consumer maneuver. Which is why we ask you
to PLEASE FOR GOD'S SAKE READ THIS OWNER'S MANUAL CAREFULLY
BEFORE YOU UNPACK THE DEVICE. YOU ALREADY UNPACKED IT, DIDN'T
YOU? YOU UNPACKED IT AND PLUGGED IT IN AND TURNED IT ON AND 
FIDDLED WITH THE KNOBS, AND NOW YOUR CHILD, THE SAME CHILD WHO
ONCE SHOVED A POLISH SAUSAGE INTO YOUR VIDEOCASSETTE RECORDER
AND SET IT ON "FAST FORWARD", THIS CHILD ALSO IS FIDDLING
WITH THE KNOBS, RIGHT? AND YOU'RE JUST NOW STARTING TO READ 
THE INSTRUCTIONS, RIGHT??? WE MIGHT AS WELL JUST BREAK THESE 
DEVICES RIGHT AT THE FACTORY BEFORE WE SHIP THEM OUT, YOU 
KNOW THAT? 

Dave Barry, "Read This First"

HDN_TRACK and HDS_FULLDRAG

Development Comments

I'm posting this, because it took me two hours to find the issue.

I wanted to customize a listview's header control, i.e. changing its behavior when the user resizes a column. According to the MSDN documentation, the header sends following notifications:

I've had no problem getting HDN_BEGINTRACK and HDN_ENDTRACK. Unfortunately, I didn't receive the HDN_TRACK notification.

I've found many examples in the internet, which, instead of HDN_TRACK, intercepted the HDN_ITEMCHANGING notification. Well, after some more research, I've found a hint to the header control's style HDS_FULLDRAG, which causes the control to render its content while being resized. If this style is set, no HDN_TRACK notifications are sent. And the System.Windows.Forms.ListView's header has this style by default. That's ok, but what's not ok is that nowhere in the MSDN the relation between HDN_TRACK and HDS_FULLDRAG is documented.

I hope that if someone stumbles over this issue, Google will refer him to here. It would save him some time.

Update: I've got a request from Martin Welker, who asked how to remove HDS_FULLDRAG. I've found the article INFO: HDN_TRACK Notifications and Full Window Drag Style in the Microsoft Knowledge Base:

SUMMARY Starting with version 4.70 of ComCtl32.dll, the header control of a list view control in report view (LVS_REPORT) automatically receives the HDS_FULLDRAG style. When this style is set, the parent of a list view control receives HDN_ITEMCHANGING notifications, rather than HDN_TRACK notifications, when the column divider of the header control is dragged. To receive HDN_TRACK notifications, the header control of the list view control must not have the HDS_FULLDRAG style set. Note that the HDS_FULLDRAG style is ignored in versions of ComCtl32.dll prior to 4.70.

This article also includes some sample code how to remove the HDS_FULLDRAG style flag.