+ // Implement base class pure virtual methods.
+ long DoInsertColumn(long col, const wxListItem& info);
+
+ // free memory taken by all internal data
+ void FreeAllInternalData();
+
+ // get the internal data object for this item (may return NULL)
+ wxMSWListItemData *MSWGetItemData(long item) const;
+
+ // get the item attribute, either by quering it for virtual control, or by
+ // returning the one previously set using setter methods for a normal one
+ wxListItemAttr *DoGetItemColumnAttr(long item, long column) const;
+
+
+ wxTextCtrl* m_textCtrl; // The control used for editing a label
+ wxImageList * m_imageListNormal; // The image list for normal icons
+ wxImageList * m_imageListSmall; // The image list for small icons
+ wxImageList * m_imageListState; // The image list state icons (not implemented yet)
+ bool m_ownsImageListNormal,
+ m_ownsImageListSmall,
+ m_ownsImageListState;
+
+ int m_colCount; // Windows doesn't have GetColumnCount so must
+ // keep track of inserted/deleted columns
+ long m_count; // Keep track of item count to save calls to
+ // ListView_GetItemCount
+
+ // all wxMSWListItemData objects we use
+ wxVector<wxMSWListItemData *> m_internalData;
+
+ // true if we have any items with custom attributes
+ bool m_hasAnyAttr;
+
+ // these functions are only used for virtual list view controls, i.e. the
+ // ones with wxLC_VIRTUAL style
+
+ // return the text for the given column of the given item
+ virtual wxString OnGetItemText(long item, long column) const;
+
+ // return the icon for the given item. In report view, OnGetItemImage will
+ // only be called for the first column. See OnGetItemColumnImage for
+ // details.
+ virtual int OnGetItemImage(long item) const;
+
+ // return the icon for the given item and column.
+ virtual int OnGetItemColumnImage(long item, long column) const;
+
+ // return the attribute for the given item and column (may return NULL if none)
+ virtual wxListItemAttr *OnGetItemColumnAttr(long item, long WXUNUSED(column)) const
+ {
+ return OnGetItemAttr(item);
+ }
+
+private:
+ // process NM_CUSTOMDRAW notification message
+ WXLPARAM OnCustomDraw(WXLPARAM lParam);
+
+ // set the extended styles for the control (used by Create() and
+ // UpdateStyle()), only should be called if InReportView()
+ void MSWSetExListStyles();
+
+ // initialize the (already created) m_textCtrl with the associated HWND
+ void InitEditControl(WXHWND hWnd);
+
+ // destroy m_textCtrl if it's currently valid and reset it to NULL
+ void DeleteEditControl();