FIX: CListCtrl::InsertColumn() Causes Column Data to Shift (151897)
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), when used with:
- Microsoft Visual C++, 32-bit Editions 4.0
- Microsoft Visual C++, 32-bit Editions 4.1
- Microsoft Visual C++, 32-bit Enterprise Edition 4.2
- Microsoft Visual C++, 32-bit Professional Edition 4.2
This article was previously published under Q151897 SYMPTOMS
After adding items to a CListCtrl, if you call InsertColumn() to add
additional columns, column data starting from the second column will be
shifted right. For example, if you initially create two columns and add
your items, adding a third column will cause the data from the second
column to disappear and reappear in the third column. You may need to force
a repaint (minimize the window and restore it) to see the changes.
CAUSE
This is a bug in the Listview control. Sending an LVM_INSERTCOLUMN after
data has already been inserted, causes this problem.
RESOLUTION
There are several ways to work around this problem:
Method #1
Use LPSTR_TEXTCALLBACK in the call to InsertItem(). This will cause a
notification LVN_GETDISPINFO to be sent to the parent of the CListCtrl each
time the text for each item is needed. The handler for this notification
will then fill in the appropriate text for each item.
Method #2
Create all the columns up front before adding any items. You can hide
columns by setting their initial width to zero in the call to
InsertColumn(). To show columns, you can call SetColumnWidth() or
SetColumn(). The only drawback to this method is that the user can still
resize the column by dragging in the header control.
Method #3
Reset the contents of the CListCtrl via DeleteAllItems() and add all column
data again after calling InsertColumn().
STATUS
Microsoft has confirmed this to be a problem in the Microsoft products
listed at the beginning of this article. This bug has been fixed in
COMCTL32.DLL which as been released with Microsoft Windows NT 4.0 and
Microsoft Internet Explorer 3.01.
Modification Type: | Major | Last Reviewed: | 12/1/2003 |
---|
Keywords: | kbbug kbfix kbListView KbUIDesign kbVC500fix KB151897 |
---|
|